У меня есть mysql script для сводной таблицы, а затем подсчет некоторых данных внутри:
SELECT A.Line,
week1.1stweek, week2.2ndweek,
IFNULL(week1.1stweek,0) + IFNULL(week2.2ndweek,0) AS TOTAL
FROM inspection_report AS A
LEFT JOIN(
SELECT Line, (SUM(S) + SUM(A) + SUM(B)*0.4 + SUM(C)*0.1)/COUNT(Serial_number) AS 1stweek
FROM inspection_report
WHERE DAY(Inspection_datetime) BETWEEN 1 AND 7
GROUP BY Line, WEEK(Inspection_datetime), YEAR(Inspection_datetime)
) AS week1 USING (Line)
LEFT JOIN(
SELECT Line, (SUM(S) + SUM(A) + SUM(B)*0.4 + SUM(C)*0.1)/COUNT(Serial_number) AS 2ndweek
FROM inspection_report
WHERE DAY(Inspection_datetime) BETWEEN 8 AND 14
GROUP BY Line, WEEK(Inspection_datetime), YEAR(Inspection_datetime)
) AS week2 USING (Line)
GROUP BY Line
он заставляет голову таблицы показывать как кнопку. после этого я хочу сделать "SUM" ниже каждого столбца, например:
Line 1stweek 2ndweek total
1 12 2 14
2 3 0 3
SUM 15 2 17
как это сделать?
Используйте модификатор WITH ROLLUP
.
http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html
Вам нужно будет изменить внешний оператор select, но
SELECT A.Line,
sum(week1.1stweek) as 1stweek, sum(week2.2ndweek) 2ndweek,
sum(IFNULL(week1.1stweek,0) + IFNULL(week2.2ndweek,0)) AS TOTAL
чтобы модификатор вступил в силу. Измените A.Line
на IFNULL(A.Line, "SUM") as Line
, если вам нужно, чтобы он был помечен как таковой.
Это меня заинтересовало, поэтому я внедрил эквивалент в онлайн-песочницу SQL, здесь.
select ifnull(toy, "SUM") as toy, sum(s1.store1) as store2, sum(s2.store2) as store1, sum(ifnull(store1,0)+ifnull(store2,0)) as total from (select toy_id, sum(inventory) as store1 from store_inventory where store_id=1 group by toy_id) as s1 left join (select toy_id, sum(inventory) as store2 from store_inventory where store_id=2 group by toy_id) as s2 using (toy_id) left join toy_info using (toy_id) group by toy with rollup;
(Прошу прощения за отсутствие навыков уценки, это мой первый пост.)