mysql - 我被逻辑困住了,也许我做错了 SQL
问题描述
到目前为止我尝试过的查询
select sum(g1.datacount) from
(select DAte(DATE) as 'newdate', COUNT(RIDE_ID) as 'datacount' from
ride_Data
where date(date) between (now() - interval 90 day) and now()
group by date(date)
order by date(date) desc) as g1
where g1.newdate between (now() - interval 7 day) and now()
上述查询的简短版本仅用于解释。
select sum(g1.datacount) from g1
where g1.newdate between (now() - interval 7 day) and now()
我想要实现的目标是 我想对列数据计数的最后 7 天求和,如您所见,我已经正确完成了该部分,但现在有任何问题,但在实际情况下,我希望在 7 天组中对最后 90 天求和,我不知道如何以这种方式分组?
有什么可以按我最近的 7 条记录结果分组的吗
解决方案
如果您想与现在进行比较,那么您可以使用带有 DIV 7 的 DATEDIFF 进行分组。
SELECT ((DATEDIFF(t.newdate, NOW())) DIV 7) AS WeekDiff,
-- MIN(t.newdate) AS MinDate,
-- MAX(t.newdate) AS MaxDate,
COUNT(t.RIDE_ID) as TotalRides
FROM ride_Data t
WHERE t.newdate BETWEEN (NOW() - interval 90 day) AND NOW()
GROUP BY WeekDiff
ORDER BY WeekDiff DESC;
或者也许只是在一周内分组。
SELECT YEAR(t.newdate)*100+WEEK(t.newdate, 3) AS WeekNr,
COUNT(t.RIDE_ID) as TotalRides
FROM ride_Data t
WHERE t.newdate BETWEEN (NOW() - interval 90 day) AND NOW()
GROUP BY WeekNr
ORDER BY WeekNr DESC;
推荐阅读
- python - 推送到远程仓库
- python - SageMath 是否提供交互式教程?
- python - 尽管禁用了 app.autodiscover_tasks() 和 CELERY_IMPORTS,Celery 仍会发现所有以前的任务
- mysql - 为什么 cmbStream.ValueMember = "id" 为所有值显示零而 cmbStream.DisplayMember = "name" 显示正确的值
- java - 为什么我们有单独的接口,称为 Entry,它嵌套在 JAVA 的 Map 接口中
- amazon-s3 - 如何使用 S3 和 aws lambda 发送和检索文本文件数据
- java - 无法在android中将字符串转换为日期
- javascript - 保存从外部 api 获取的数据
- python - tkinter 中按钮之间的额外空格
- mysql - Mysql 插入排序规则问题