在 MySQL 中,我有下表:
| 日期 | 作業 | 代碼 |
|---|---|---|
| 2022-01-01 11:41:24 | 10 | 1 |
| 2022-01-01 10:41:24 | 10 | 1 |
| 2022-01-03 09:41:24 | 0 | 0 |
| 2022-02-04 06:41:24 | 10 | 1 |
| 2022-02-05 05:41:24 | 40 | 1 |
我的 SQL 代碼:
SELECT extract(MONTH FROM date) AS month, count(number) AS sum_number FROM be WHERE code='1' group by month
這是這段代碼的結果:
結果
| 月 | sum_work |
|---|---|
| 1 | 20 |
| 2 | 50 |
我怎樣才能得到這個結果,我需要在我的查詢中改變什么?
work_days:每個月他們作業了多少天
最后結果:
| 月 | 作業日 | sum_work |
|---|---|---|
| 1 | 1 | 20 |
| 2 | 2 | 50 |
uj5u.com熱心網友回復:
您必須計算不同的日期:
SELECT MONTH(date) AS month,
COUNT(DISTINCT DATE(date)) AS work_days,
COUNT(*) AS sum_number -- or SUM(work) as your expected result
FROM be
WHERE code='1'
GROUP BY month;
uj5u.com熱心網友回復:
如果我對您的要求的猜測是正確的,那么您希望每個月的天數有一個或多個記錄。
你可以嘗試這樣的事情:
SELECT LAST_DAY(date) AS month_ending,
COUNT(number) AS sum_number
COUNT (DISTINCT DATE(date)) AS workd_days
FROM be
WHERE code='1'
GROUP BY LAST_DAY(DATE)
LAST_DAY(date)是比 EXTRACT(MONTH FROM date) 更好的選擇,因為2021-01-06兩者2022-01-06都從后者回傳 1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410994.html
標籤:
