mysql按年月日查询_MySql按年月日分组查询

MySql日期的格式化

select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks;

select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days;

select DATE_FORMAT(create_time,'%Y%m') months,count(caseid) count from tc_case group by months;

1、按照月份:

select sum(total_amount) as total, date_format(stat_date, '%Y-%m') from week_report WHERE `stat_date` BETWEEN '2016-11-02' AND '2017-04-30' group by date_format(stat_date, '%Y-%m');

select sum(total_amount) as total,date_format(stat_date, '%Y-%m') from week_report WHERE `stat_date` BETWEEN '2016-12-11' AND '2016-12-22' group by date_format(stat_date, '%Y-%m');

获得按照月份分组进行汇总的数据。

concat()连接字符串

-- month

select CONCAT(YEAR(stat_date),'_',DATE_FORMAT(stat_date,'%m')) months ,sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx

WHERE `stat_date` BETWEEN '2016-01-02' AND '2017-05-30' group by months;

-- 季度

select CONCAT(YEAR(stat_date),'_',quarter(stat_date)) qu,sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx

WHERE `stat_date` BETWEEN '2016-01-02' AND '2017-05-30' group by qu;

-- 周

select CONCAT(YEAR(stat_date),'_',DATE_FORMAT(stat_date,'%U')) weeks,sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx

WHERE `stat_date` BETWEEN '2016-01-02' AND '2017-05-30' group by weeks;

-- 天

select CONCAT(YEAR(stat_date),'_',DATE_FORMAT(stat_date,'%m'),'_',DATE_FORMAT(stat_date,'%d')) days, sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx

WHERE `stat_date` BETWEEN '2016-01-02' AND '2017-05-30' group by days;

或者

select date_format(create_date, '%Y-%m') as aa,SUM(operation_balance) as money from user_wallet_record where year(create_date) = 2019 group by month (create_date);

### 使用 MySQL 按年、月、日进行分组查询MySQL 中,可以利用日期时间函数 `YEAR()`、`MONTH()` 和 `DAY()` 来实现按照年份、月份和天数对数据进行分组操作。这些函数可以从日期字段中提取相应的部分用于聚合计算。 以下是具体的 SQL 查询示例: #### 示例:按年份分组 如果希望统计每年的数据量,则可以使用如下语句: ```sql SELECT YEAR(date_column) AS year, COUNT(*) AS count FROM table_name GROUP BY YEAR(date_column); ``` 此查询会返回每一行所属的年份以及该年的记录总数[^1]。 #### 示例:按月份分组 对于每月统计数据的需求,可采用以下方法: ```sql SELECT YEAR(date_column) AS year, MONTH(date_column) AS month, COUNT(*) AS count FROM table_name GROUP BY YEAR(date_column), MONTH(date_column) ORDER BY YEAR(date_column), MONTH(date_column); ``` 这里不仅考虑到了每个月的情况,还通过组合 `YEAR()` 函数确保跨年度时也能正确分类并排序结果。 #### 示例:按具体某一天分组 当需要精确到每一天来查看活动情况或其他指标变化趋势的时候,可以用这种方式来进行分析: ```sql SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS date, SUM(value_column) AS total_value FROM table_name GROUP BY DATE_FORMAT(date_column, '%Y-%m-%d'); -- 或者更简单的方式就是直接用 DAY() SELECT YEAR(date_column) AS year, MONTH(date_column) AS month, DAY(date_column) AS day, AVG(some_numeric_field) avg_val FROM table_name GROUP BY YEAR(date_column), MONTH(date_column), DAY(date_column); ``` 以上代码片段展示了如何分别基于不同的粒度级别执行 GROUP BY 子句,并且提供了灵活调整输出格式的可能性。 另外需要注意的是,在较新的 MySQL 版本里还可以借助窗口函数进一步增强数据分析能力,比如给定排名等功能;而在旧版则可能需要用到变量模拟类似效果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值