Как считать данные из каждого столбца в MySQL? - PullRequest
0 голосов
/ 17 сентября 2010

У меня есть сценарий MySQL для сводной таблицы, а затем подсчитываю некоторые данные внутри:

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

заставляет заголовок таблицы показывать кнопку «Мне нравится». после этого я хочу сделать «СУММУ» под каждым столбцом, как:

Line          1stweek            2ndweek             total
1               12                 2                   14
2               3                  0                    3
SUM             15                 2                   17

как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2010

Это меня заинтересовало, поэтому я реализовал эквивалент в онлайн-песочнице 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;

(простите за отсутствие навыков уценки, этомой первый пост.)

0 голосов
/ 17 сентября 2010

Используйте модификатор WITH ROLLUP.

http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html

Вы должны изменить внешний оператор выбора хотя бы на

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 вместо этого, если вам нужно, чтобы оно было помечено как таковое.

...