[英]MySQL - Group By WITH ROLLUP Base On Month and User Id
我想顯示該月的數據庫,然后顯示該月的總值 。
例如:
| ID | Name | Amount | Date | Month | Day | Total |
--------------------------------------------------------------------------------
| ZAK00001 | Committee Meeting April | 4000 | 06-02-19 | 2 | 6 | 4000 |
| Total | 4000 |
| ZAK00009 | Meeting May | 500 | 10-06-19 | 6 | 10 | 1000 |
| ZAK00011 | Meeting May | 3000 | 20-06-19 | 2 | 20 | 3000 |
| Total | 4000 |
如何在SQL
實現以上數據? 到目前為止,我已經嘗試使用。
更新查詢和結果。
我添加IFNULL(a.id, 'Total')
詢問
SELECT
-- a.id,
IFNULL(a.id, 'Total'),
m.name,
a.amount,
date_format( str_to_date( m.meeting_date, "%d/%m/%Y" ), "%d-%m-%y" ) AS date,
MONTH (
str_to_date( m.meeting_date, "%d/%m/%Y" )) AS month,
DAYOFMONTH(
str_to_date( m.meeting_date, "%d/%m/%Y" )) AS day,
sum(a.amount)
FROM
applications a
INNER JOIN meeting_application ma ON a.id = ma.application_id
INNER JOIN meetings m ON ma.meeting_id = m.id
GROUP BY monthName, a.id WITH ROLLUP
結果
| ID | Name | Amount | Date | Month | Day | Total |
---------------------------------------------------------------------------------
| ZAK00001 | Committee Meeting April | 4000 | 06-02-19 | 2 | 6 | 4000 |
| Total | Committee Meeting April | 4000 | 06-02-19 | 2 | 6 | 4000 |
| ZAK00009 | Meeting May | 1500 | 10-06-19 | 6 | 10 | 1500 |
| ZAK00011 | Meeting May | 500 | 20-06-19 | 6 | 20 | 500 |
| Total | Meeting May | 500 | 20-06-19 | 6 | 20 | 2000 |
我們可以在查詢中做到嗎?
我能夠顯示Total
文本。 如何不顯示重復值?
應該有一些永久性的解決方法,但這也可以解決您的問題:使用案例聲明 :
SELECT
-- a.id,
IFNULL(a.id, 'Total'),
case when a.id is not null then m.name else null end as name,
case when a.id is not null then a.amount else null end as amount,
case when a.id is not null then date_format( str_to_date( m.meeting_date, "%d/%m/%Y" ), "%d-%m-%y" ) else null end AS date,
case when a.id is not null then MONTH (
str_to_date( m.meeting_date, "%d/%m/%Y" )) else null end AS month,
case when a.id is not null then DAYOFMONTH(
str_to_date( m.meeting_date, "%d/%m/%Y" )) else null end AS day,
sum(a.amount)
FROM
applications a
INNER JOIN meeting_application ma ON a.id = ma.application_id
INNER JOIN meetings m ON ma.meeting_id = m.id
GROUP BY monthName, a.id WITH ROLLUP
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.