[英]PHP Calculate total document saves per day
我正在尝试每天节省的文件总数。 但是我不知道如何。 这是我的数据库中的列及其数据。
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。 更新:并显示当天保存的文档总数。
尝试以下操作(将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
。
然后,我们在标记为totalSaves
的列中SELECT
存储在row_count
作为单行的最终数字。
将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
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.