Вопрос по mysql, php – Сводные таблицы PHP / MySQL

2

Каков наилучший способ обработки сводных таблиц в php / MySQL (или что-то в этом роде)

У меня есть запрос, который возвращает информацию, как показано ниже

id      eng     week        type                sourceid    userid

95304   AD      2012-01-02  Technical           744180      271332
95308   AD      2012-01-02  Non-Technical       744180      280198
96492   AD      2012-01-23  Non-Technical       1056672     283843
97998   AD      2012-01-09  Technical           1056672     284264
99608   AD      2012-01-16  Technical           1056672     283842
99680   AD      2012-01-02  Technical           1056672     284264
100781  AD      2012-01-23  Non-Technical       744180      280671

И я хочу построить отчет в PHP, который будет рассчитываться по группам с заголовками столбцов недели, начиная с. Например.

week commencing: 2012-01-02    2012-01-09    2012-01-16    2012-01-23    2012-01-30
Total:           3             1             1             1             0
Technical:       2             1             1             0             0
Non-Technical:   1             0             0             1             0

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

Я знаю, как передать детали месяца и извлечь все данные в PHP, но в настоящее время он выводится в одном столбце, а не в состоянии группировать и помещать его в массив.

Любая помощь приветствуется!

Еще один похожий вопросstackoverflow.com/q/7674786/684229 TMS
возможный дубликатMYSQL - Rows to Columns TMS

Ваш Ответ

1   ответ
4

вы можете сделать это с помощью подзапроса, а затем произвести и агрегировать эти данные. Попробуйте что-то вроде этого:

select week, 
    count(*) as total, 
    sum(technical) as technical, 
    sum(non_technical) as non_technical) 
from(
    select week, 
    case(type) when 'Technical' then 1 else 0 END as technical, 
    case(type) when 'Non-Technical' then 1 else 0 END as non_technical
) as data
GROUP BY week

Похожие вопросы