我似乎在提出查询来实现我想要的目标时遇到了一些麻烦。我有一张如下表..
| Date(TIMESTAMP) | Count |
|---------------------|-------|
| 2016-02-01 01:00:00 | 52 |
| 2016-01-05 11:30:00 | 14 |
| 2016-02-01 04:20:00 | 36 |
| ... | ... |
该表大约有 40,000 行。我想做的是获取多个日期范围的总数,所以我最终得到以下结果......
| Period | Total |
|------------|-------|
| All | 10245 |
| Past year | 1401 |
| Past month | 104 |
| Past week | 26 |
目前,我正在 PHP 脚本中运行一个循环,并对我要查找的每个日期范围进行单独的查询。实际上,我在每个循环中执行大约 10 个查询来获取不同的统计信息,但对于本示例,我对其进行了简化。这需要很长时间,我希望有一种更优雅的方法来做到这一点,但是我现在花了很多时间尝试不同的事情和研究,但一无所获。我了解如何使用 CASE 进行分组,但不了解当一条记录可能需要位于多个容器中时。有什么帮助吗?
尝试这个UNION
query:
SELECT 'All', COUNT(*) AS Total FROM yourTable
UNION
SELECT 'Past year', COUNT(*) AS Total
FROM yourTable
WHERE DATE(TIMESTAMP) > DATE_ADD(NOW(), INTERVAL -1 YEAR)
UNION
SELECT 'Past month', COUNT(*) AS Total
FROM yourTable
WHERE DATE(TIMESTAMP) > DATE_ADD(NOW(), INTERVAL -1 MONTH)
UNION
SELECT 'Past week', COUNT(*) AS Total
FROM yourTable
WHERE DATE(TIMESTAMP) > DATE_ADD(NOW(), INTERVAL -1 WEEK)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)