mysql - MySQL查询以计算按日期范围分组的行
问题描述
全部。我有一个表,其中的日期列要么为空,要么包含事件的日期。我试图计算这些日期中有多少落在给定范围内(例如,每月的第一天到每月的最后一天),然后按该范围分组(即按月分组)
如果我只做一个月,它会是这样的:
SELECT count(*)
FROM my_table
WHERE my_table.event_date > 1530403200 and my_table.event_date < 1530403200
/* 7/1/2018 to 7/31/2018 */
所以我真正想要的是一个查询,给我按月分组的结果,每个月的总行数,比如:
:
6/1/2018 - 6/30/2018, 8650
7/1/2018 - 7/31/2018, 9180
:
etc.
谢谢你的任何建议。
解决方案
您可以使用以下内容:
SELECT
MONTH(FROM_UNIXTIME(event_date)) AS month,
MIN(FROM_UNIXTIME(event_date)) AS first_date,
MAX(FROM_UNIXTIME(event_date)) AS last_date,
COUNT(*) AS cnt_dates
FROM my_table
WHERE FROM_UNIXTIME(my_table.event_date) > '2018-08-01'
AND FROM_UNIXTIME(my_table.event_date) < '2018-08-15'
AND NOT my_table.event_date IS NULL
GROUP BY MONTH(FROM_UNIXTIME(event_date))
推荐阅读
- javascript - Try to put space between items with splice function but when reload page crash (javascript)
- javascript - 联系表单脚本 Ajax 无法识别来自 Mail.php 的正确结果
- react-native - 运行 React Native 应用程序时出现“找不到变量:a”错误
- unity3d - 等轴测 3D Unity 项目中的 2D 精灵
- python - 如何在pygame rect框中获取条形码扫描仪输出
- java - 在 JQuery 中使用 ajax 方法 .get() 和 .post() 添加到购物车
- javascript - 使用数据表上的单击事件调用“组件函数”
- apache - 如何在 msys2 上构建 apache httpd 2.* 及更高版本
- excel - VBA返回动态数组并分配给变量
- android - 如何防止手机屏幕在使用 ADB 调用 Android pie (9) 时关闭(或不使用,如果可能)