Как считать данные из каждого столбца в MySQL?

0

У меня есть 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

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

Теги:
count
pivot-table

2 ответа

0
Лучший ответ

Используйте модификатор 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, если вам нужно, чтобы он был помечен как таковой.

  • 0
    но это не считая all.it просто показать последние данные из каждого столбца.
  • 0
    после использования IFNULL (A.Line, "SUM") в качестве строки "SUM", не показанной ниже, по-прежнему "null". Почему это происходит?
Показать ещё 3 комментария
0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню