[英]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.