SQL 按周,月,季度,年查询统计数据

本文介绍如何使用SQL按不同时间周期(自然周、自然月、季度和年度)进行数据汇总的方法。通过具体SQL语句示例,帮助读者掌握针对日期字段进行分组统计的技术要点。

//按自然周统计
select to_char(date,'iw'),sum()
from
where
group by to_char(date,'iw')

//按自然月统计
select to_char(date,'mm'),sum()
from
where
group by to_char(date,'mm')

//按季统计
select to_char(date,'q'),sum()
from
where
group by to_char(date,'q')

//按年统计
select to_char(date,'yyyy'),sum()
from
where
group by to_char(date,'yyyy')

### 按查询数据 在 MySQL 中,可以根据表中的日期字段按自然筛选数据,使用`CURRENT_TIMESTAMP - INTERVAL 1 year`来获取当前时间往前推一的时间点,筛选出大于等于该时间点的数据。示例代码如下: ```sql SELECT * FROM limit_rule_record WHERE create_time >= CURRENT_TIMESTAMP - INTERVAL 1 year; ``` 此查询会返回`limit_rule_record`表中`create_time`在当前自然数据 [^2]。 ### 按查询数据 按自然查询数据时,同样在 MySQL 里,使用`CURRENT_TIMESTAMP - INTERVAL 1 MONTH`获取当前时间往前推一个的时间点,以此筛选数据。示例如下: ```sql SELECT * FROM limit_rule_record WHERE create_time >= CURRENT_TIMESTAMP - INTERVAL 1 MONTH; ``` 该查询会返回`limit_rule_record`表中`create_time`在当前自然数据 [^2]。 另外,如果要查询当前份且当前份的数据,可以使用`MONTH`和`YEAR`函数,示例如下: ```sql SELECT * from t_call_record where MONTH(create_time) = MONTH(CURDATE()) and YEAR(create_time) = YEAR(CURDATE()); ``` 这个查询会返回`t_call_record`表中`create_time`为当前份且当前份的数据 [^1]。 ### 按季度查询数据SQL 中按季度查询数据,以一个表`riq`为例,使用`IIf`和`month`函数判断份所属季度,再结合`year`函数按季度分组统计数据。示例代码如下: ```sql strSQL="SELECT IIf(month(addtime) in (1,2,3),'一季度',IIf(month(addtime) in (4,5,6),'二季度',IIf(month(addtime) in (7,8,9),'三季度','四季度'))) AS Season,sum(num) as znum,year(addtime) as pyear FROM riq GROUP BY year(addtime),IIf(month(addtime) in (1,2,3),'一季度',IIf(month(addtime) in (4,5,6),'二季度',IIf(month(addtime) in (7,8,9),'三季度','四季度'))) ORDER BY year(addtime) DESC,IIf(month(addtime) in (1,2,3),'一季度',IIf(month(addtime) in (4,5,6),'二季度',IIf(month(addtime) in (7,8,9),'三季度','四季度')))"; ``` 此查询会返回`riq`表中按季度分组统计的数据,结果包含季度、数量总和以及份 [^3]。 在 MySQL 中,也可以按自然季度查询数据,使用`CURRENT_TIMESTAMP - INTERVAL 1 quarter`获取当前时间往前推一个季度的时间点来筛选数据,示例如下: ```sql SELECT * FROM limit_rule_record WHERE create_time >= CURRENT_TIMESTAMP - INTERVAL 1 quarter; ``` 该查询会返回`limit_rule_record`表中`create_time`在当前自然季度数据 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值