我正在尝试获取每天保存的文档总数。但我不知道如何。 这是列及其在我的数据库中的数据。
report_id doc_date total_doc
- 1 2017-06-06 1
- 2 2017-06-23 1
- 3 2017-06-14 1
- 4 2017-06-12 1
- 5 2017-06-16 1
- 6 2017-06-21 1
- 7 2017-06-14 1
- 9 2017-06-13 1
- 10 2017-06-21 1
- 11 2017-06-12 1
- 12 2017-06-18 1
- 13 2017-06-12 1
.....
上面还有类似的日期,比如
- 3 2017-06-14 1
- 7 2017-06-14 1
我需要一个 sql 查询来计算和显示每天保存的文档总数。因此,对于 2017 年 6 月 14 日,总数为 2。 有什么想法吗? 仅供引用,total_doc 自动等于 1。 更新: 并显示当天保存的文档总数。
最佳答案
SELECT
doc_date,
count(doc_date) AS saves
FROM documents
GROUP BY doc_date
ORDER BY doc_date ASC;
或
SELECT
doc_date,
sum(total_doc) AS saves
FROM documents
GROUP BY doc_date
ORDER BY doc_date ASC;
声明:
1) 如果您使用第一个选项,则可以删除列 total_doc
。这也是我的建议。 doc_date
列中的日期值采用良好的 mysql 格式,因此您可以对其进行可靠的操作。
2) 如果愿意,您可以按 doc_date
降序排列记录。
3) 在使用 count
或 sum
等函数时,不要忘记为列添加别名(就像我对 AS saves
所做的那样)。因为这样您也可以使用 HAVING
过滤器。所以像这样 - 所有文档每天保存一次以上:
SELECT
doc_date,
count(doc_date) AS saves
FROM documents
GROUP BY doc_date
HAVING saves > 1
ORDER BY doc_date ASC;
然后您还可以在指定日期仅按一个已保存的文档进行过滤:
SELECT
doc_date,
count(doc_date) AS saves
FROM documents
WHERE doc_date = "2017-06-12"
GROUP BY doc_date
HAVING saves > 1
ORDER BY doc_date ASC;
4) 或者,如果您愿意,也可以忽略 HAVING
和 doc_date
。这将为您提供在指定日期保存的文档。
SELECT count(doc_date) AS saves
FROM documents
WHERE doc_date = "2017-06-12"
GROUP BY doc_date
ORDER BY doc_date ASC;
关于PHP 计算每天保存的文档总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44877041/