Как создать сводную таблицу - PullRequest
0 голосов
/ 03 мая 2019

Учитывая таблицу, в которой перечислены действия действующих лиц (я скрываю не относящийся к делу столбец отметки времени), мы хотели бы иметь сводную таблицу, в которой перечислены строки для каждого субъекта с подсчетами за действие, которое он совершил. мы предопределили три возможных действия

Стандартный SQL или Google BigQuery Синтаксис


Actor   |   Action
_________________
Sam         shoot
Sam         shoot
Sam         heal
Sam         dead
Bob         shoot
Bob         shoot
Bob         shoot
Bob         dead

К


Actor   |  shoot  |  heal   | Dead
_____________________________________
Sam        2          1         1
Bob        3          0         1

1 Ответ

1 голос
/ 03 мая 2019

Если вы знаете нужные вам столбцы, используйте countif():

select actor,
       countif(action = 'shoot') as shoot,
       countif(action = 'heal') as heal,
       countif(action = 'dead') as dead
from t
group by actor;

Если нет, тогда у вас есть проблема, потому что запросы SQL обычно должны знать, какие столбцы находятся внабор результатов.Один из обходных путей - поместить значения в строки, а не в столбцы:

actor    action     count
 sam     shoot        2
 . . .

То есть:

select actor, action, count(*)
from t
group by actor, action;

(сюда не входит число 0, но запрос можно настроитьДля этого.)

Или использовать JSON или массивы для хранения значений для каждого действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...