MySQL DATE_FORMAT用法,按周,按月,按日分组统计数据

MySQL  DATE_FORMAT用法:


DATE_FORMAT(date,format) 

根据format字符串格式化date值。下列修饰符可以被用在format字符串中: 

%M 月名字(January……December) 
%W 星期名字(Sunday……Saturday) 
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) 
%Y 年, 数字, 4 位 
%y 年, 数字, 2 位 
%a 缩写的星期名字(Sun……Sat) 
%d 月份中的天数, 数字(00……31) 
%e 月份中的天数, 数字(0……31) 
%m 月, 数字(01……12) 
%c 月, 数字(1……12) 
%b 缩写的月份名字(Jan……Dec) 
%j 一年中的天数(001……366) 
%H 小时(00……23) 
%k 小时(0……23) 
%h 小时(01……12) 
%I 小时(01……12) 
%l 小时(1……12) 
%i 分钟, 数字(00……59) 
%r 时间,12 小时(hh:mm:ss [AP]M) 
%T 时间,24 小时(hh:mm:ss) 
%S 秒(00……59) 
%s 秒(00……59) 
%p AM或PM 
%w 一个星期中的天数(0=Sunday ……6=Saturday ) 
%U 星期(0……52), 这里星期天是星期的第一天 
%u 星期(0……52), 这里星期一是星期的第一天 
%% 一个文字“%”。

举例:

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; 



### MySQL 中使用 GROUP BY 进行分组统计MySQL 查询中,`GROUP BY` 是一种强大的功能,用于将数据按特定列或表达式进行分组,并配合聚合函数完成统计数据的操作。以下是关于 `GROUP BY` 的具体用法及其与聚合函数的关系: #### 1. 基本语法结构 `GROUP BY` 子句通常与 `SELECT` 和聚合函数一起使用,其基本语法如下: ```sql SELECT 列名, 聚合函数(列名) FROM 表名 WHERE 条件 GROUP BY 列名; ``` 此语法表示先通过条件过滤数据,再依据指定的列对结果集进行分组,并应用聚合函数来计算每组的结果。 #### 2. 配合聚合函数使用 常见的聚合函数有 `COUNT()`、`SUM()`、`AVG()`、`MAX()` 和 `MIN()` 等。这些函数可以用来统计每一组的数据特性。例如: - 统计每个类别的记录数: ```sql SELECT category, COUNT(*) AS record_count FROM products GROUP BY category; ``` - 计算每个部门员工工资总和: ```sql SELECT department_id, SUM(salary) AS total_salary FROM employees GROUP BY department_id; ``` 上述例子展示了如何利用 `GROUP BY` 对不同类别或部门的数据进行分类汇总[^1]。 #### 3. 按分组统计 当需要基于时间维度分析数据时,可以通过 `DATE_FORMAT` 函数实现更灵活的时间格式化操作。例如,统计每天的订单数量: ```sql SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS order_day, COUNT(*) AS daily_orders FROM orders WHERE status = 'completed' GROUP BY DATE_FORMAT(order_date, '%Y-%m-%d'); ``` 这里使用了 `DATE_FORMAT` 将期字段转换为所需的格式(如年月日),从而实现了精确到天级别的分组统计[^2]。 #### 4. 添加额外筛选条件 (HAVING) 如果希望进一步限制最终输出的分组结果,则可引入 `HAVING` 子句。注意区别于 `WHERE`,后者作用于原始表而前者针对已形成的分组。 ```sql SELECT customer_id, SUM(amount) AS total_spent FROM transactions GROUP BY customer_id HAVING total_spent > 1000; ``` 该查询返回消费总额超过一千元的所有客户信息[^3]。 #### 5. 复杂条件下的分组 对于涉及多个复杂逻辑判断的情况,也可以嵌套其他 SQL 功能来增强灵活性。比如下面这个案例展示了一个复杂的多条件组合场景下如何正确运用 group by 实现目标需求[^4]: ```sql SELECT JSPXMBM, COUNT(*) FROM table_name b WHERE b.jzt=1 AND jdjsprq LIKE '2019%' AND jspwcrq LIKE '2019%' AND INSTR('db_jz,kn_jz,wb_jz,ls_jz',b.JSPXMBM)>0 GROUP BY JSPXMBM; ``` 以上就是有关 mysql 数据库里 group by 关键字的一些基础介绍以及实际应用场景举例说明。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值