2017-07-03 48 views
1

我試圖讓每天保存的文件總數。但我不知道如何。 以下是我的數據庫中的列及其數據。PHP計算每天保存的文件總數

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. 更新: 並顯示當天的總文件保存。

+0

你有沒有嘗試過任何東西? – Blank

+0

是的,但我總是錯誤,我不是在MySQL領域的親。 –

+0

然後發佈您的查詢和錯誤。 – Blank

回答

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)使用countsum等函數時,不要忘記別名(如我對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),也可以如果您願意,也可以忽略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; 
0

試試這個(設置table_name你的表名):

SET @row_count = 0; 
SELECT (@row_count:[email protected]_count+1) AS totalSaves FROM table_name WHERE doc_date='2017-06-14' 

第一行定義一個變量,row_count,並將其設置爲0

第二行通過數據庫,找到日期爲2017-06-14的所有行,並且每個行增量爲row_count

然後,我們SELECT存儲在row_count中的最後一個數字作爲標記爲totalSaves的列中的單個行。

設置table_name到表

0
​​

變化table_name的名稱與你的表名。

如果你只是想顯示1個日期:

SELECT doc_date, sum(total_doc) AS total 
FROM table_name 
WHERE doc_date = '2017-06-14' 
GROUP BY doc_date