SQL增强

SQL增强:统计小时级PV
本文探讨如何增强SQL以实现统计每天每小时的页面访问量(PV)。内容包括理解查询来源、设置过滤条件、使用分组以及解决在GROUP BY语句中遇到的语法限制问题。实践证明,在多分组字段中,顺序不影响最终结果,但影响执行顺序。

SQL增强

需求 : 统计今天每个小时分别有多个pv

分组字段 : 天   小时
		 天恰好就是分区字段  通过分区字段即可过滤出
		 真正的分子字段就一个  hour

编写sql的思路 :

  • 首先明确开始关键字 , 如select
  • 其次我们先跳过需要查询的东西 , 去关注查询的来源 , 即from , 若后面接的是一个真实存在的表 , 则直接写 , 若不是真实存在的 , 也是通过另外方式获取的 , 比如也是通过查询获得的==>即子查询
  • 再关注where(分组前)过滤的条件
  • 在关注分组group by
  • having(分组后)的过滤
  • order by...
  • sql基本功 写还是读 寻找到sql 关键字 from table(真实表 来自于子查询返回的结果)
select
...
from t_user(...) t
where(条件...)
group by
having
order by
如找出北京 男女 余额宝不为空的人数并降序排序
select
count(*) as nums
from t_user t
where city="beijing"
group by t
Jeecg是一个基于代码生成器的开发框架,可以自动生成基础的增删改查功能代码,但是在实际开发中,可能会遇到一些需要自定义SQL的情况,这时可以使用Jeecg提供的SQL增强功能来实现。 Jeecg提供的SQL增强功能包括三个方面: 1. 查询条件增强:可以通过自定义查询条件来实现复杂的查询逻辑。 2. 查询结果增强:可以通过自定义查询结果字段来实现结果数据的转换或计算。 3. 更新SQL增强:可以通过自定义更新SQL来实现复杂的更新逻辑。 下面以查询条件增强为例,介绍如何使用Jeecg的SQL增强功能。 1. 编写SQL增强代码 在需要增强的Mapper.xml文件中,添加一个select标签,其中id属性值为“queryList”,并添加一个where子标签,用于编写自定义的查询条件。 ```xml <select id="queryList" parameterType="java.util.Map" resultMap="BaseResultMap" > select <include refid="Base_Column_List" /> from jeecg_demo <where> <![CDATA[ <if test="name!=null and name!=''"> and name like #{name} </if> ]]> </where> </select> ``` 在这个例子中,我们添加了一个名为“name”的查询条件,如果这个条件不为空,则会在SQL语句中添加一个“name like #{name}”的条件。 2. 注册SQL增强代码 在需要增强的Mapper接口中,添加一个@SqlSegment注解,并指定要增强SQL语句的id属性值。 ```java @SqlSegment({ @SqlVal(segment="queryList",value=@SqlCode("queryList")) }) List<JeecgDemo> queryList(@Param("name") String name); ``` 在这个例子中,我们指定了要增强SQL语句的id属性值为“queryList”,并将自定义的查询条件的代码放在了一个名为“queryList”的方法中。 3. 使用SQL增强代码 在业务代码中,调用Mapper接口中的方法时,可以传入自定义的查询条件,这些条件会在SQL语句中被使用。 ```java List<JeecgDemo> list = jeecgDemoMapper.queryList("test%"); ``` 在这个例子中,我们传入了一个名为“test%”模糊匹配的查询条件,在SQL语句中会被转换为“name like 'test%'”条件。 总的来说,Jeecg的SQL增强功能可以帮助我们在自动生成的基础增删改查功能代码的基础上,实现更加复杂的业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值