PHP计算每天的总文档保存量

时间:2017-07-03 02:38:03

标签: php mysql

我正在尝试每天保存总文档。但我不知道怎么做。 以下是我的数据库中的列以及它们的数据。

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。 的更新 并显示当天的总文件保存。

3 个答案:

答案 0 :(得分:0)

尝试此操作(将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

然后,我们SELECTrow_count中存储的最终数字作为标记为totalSaves的列中的一行。

table_name设置为您的表名称

答案 1 :(得分:0)

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

答案 2 :(得分:0)

SELECT 
    doc_date,
    count(doc_date) AS saves
FROM documents
GROUP BY doc_date
ORDER BY doc_date ASC;

OR

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)在使用AS savescount等函数时,不要忘记别名(就像我使用sum所做的那样)。因为那样你也可以使用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)或者,如果您愿意,也可以忽略HAVINGdoc_date。这将为您提供在指定日期保存的文件。

SELECT count(doc_date) AS saves
FROM documents
WHERE doc_date = "2017-06-12"
GROUP BY doc_date
ORDER BY doc_date ASC;