MySQL统计函数记录——时间段统计

按年汇总,统计:
select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by date_format(col, '%Y');
按月汇总,统计: 
select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by date_format(col, '%Y-%m');
按季度汇总,统计: 
select sum(mymoney) as totalmoney,count(*) as sheets from mytable group by concat(date_format(col, '%Y'),FLOOR((date_format(col, '%m')+2)/3)); 
select sum(mymoney) as totalmoney,count(*) as sheets from mytable group by concat(date_format(col, '%Y'),FLOOR((date_format(col, '%m')+2)/3));
按小时: 
select sum(mymoney) as totalmoney,count(*) as sheets from mytable group by date_format(col, '%Y-%m-%d %H ');
查询 本年度的数据:
SELECT * FROM mytable WHERE year(FROM_UNIXTIME(my_time)) = year(curdate())
查询数据附带季度数:
SELECT id, quarter(FROM_UNIXTIME(my_time)) FROM mytable;
查询 本季度的数据:
SELECT * FROM mytable WHERE quarter(FROM_UNIXTIME(my_time)) = quarter(curdate());
本月统计:
select * from mytable where month(my_time1) = month(curdate()) and year(my_time2) = year(curdate())
本周统计:
select * from mytable where month(my_time1) = month(curdate()) and week(my_time2) = week(curdate())
N天内记录:
WHERE TO_DAYS(NOW())-TO_DAYS(时间字段)<=N
### MySQL 中窗口函数与聚集函数的区别 #### 场景适用性差异 当需要考虑数据的时间段或上下文信息时,窗口函数更为适合[^1]。例如,在计算移动平均线、累计求和或其他涉及时间序列分析的操作时,窗口函数能够保留原始行数的同时提供所需的信息。 相反,如果仅需对一组特定列进行简单汇总而不关心其他行的影响,则应选用传统的SQL聚合函数来提高效率。这类操作通常包括COUNT()、SUM()、AVG()等标准聚合运算。 #### 功能特性对比 窗口函数允许针对每一行独立应用逻辑处理,并保持输出表中的行数量不变;相比之下,普通的聚合查询会将多行压缩成单一行的结果集[^2]。这意味着通过窗口函数可以获得更加细致化的数据分析视角,而不仅仅是整体层面的统计数据摘要。 此外,值得注意的是,虽然两者都可以实现相似的功能——比如利用OVER子句使常规聚合变为基于分区/排序后的滚动计算形式——但在具体实施方式上存在本质差别: - **聚集函数**:作用于整个分组并返回单一值; - **窗口函数**:遍历每一条记录并在其对应的范围内执行相应操作,最终得到相同数目但经过增强的新字段列表。 #### 语法结构说明 以下是两种类型的典型写法示例: ##### 聚集函数 ```sql SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department; ``` 此命令按照部门划分员工群体,并为每个部分生成一个代表性的薪资均值作为新属性加入到结果集中。 ##### 窗口函数 ```sql SELECT employee_id, salary, SUM(salary) OVER (PARTITION BY department ORDER BY hire_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as cumulative_sum FROM employees; ``` 上述代码片段展示了如何在一个给定的工作单位内部按入职日期先后顺序累加个人薪酬总额的过程。这里的关键在于`OVER()`后面的参数定义了一个滑动视窗机制,它决定了哪些先前的数据项会被纳入当前计算范围之内[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值