我正在尝试获取每天保存的总文档。但我不知道怎么做。 以下是我的数据库中的列及其数据。
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;
试试这个(将table_name
设置为表的名称(:
SET @row_count = 0;
SELECT (@row_count:=@row_count+1) AS totalSaves FROM table_name WHERE doc_date='2017-06-14'
第一行定义一个变量row_count
并将其设置为0
。
第二行遍历数据库,查找日期2017-06-14
的所有行,每行递增row_count
。
然后,我们将存储在row_count
中的最终数字SELECT
为标记为totalSaves
的列中的单行。
将table_name
设置为表的名称
SELECT doc_date, sum(total_doc) AS total
FROM table_name
GROUP BY doc_date
使用表名更改table_name。
如果您只想显示 1 个日期:
SELECT doc_date, sum(total_doc) AS total
FROM table_name
WHERE doc_date = '2017-06-14'
GROUP BY doc_date