Эта техника обычно называется "опорой":
select
city,
fruit,
sum(result = 'good') as good,
sum(result = 'bad') as bad
from mytable
group by 1,2
Обратите внимание на элегантное использование sum(condition)
вместо мирского sum(case...)
Отредактировано
Как обычно, люди не могут не делать критических / не относящихся к делу комментариев, поэтому для протокола ...
Подход sum(condition)
работает для любой базы данных, которая обрабатывает true
как 1
и false
как 0
. Mysql - одна из таких баз данных, таким образом, это подходящий ответ для вопроса, помеченного mysql
. Пробег может отличаться от других баз данных.