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