#mysql #sql #count #sum #pivot
#mysql #sql #подсчитать #сумма #сводная
Вопрос:
Моя таблица выглядит так
C1 Bool Count
A TRUE 5
A FALSE 5
B FALSE 6
C TRUE 2
C FALSE 8
Я хочу вычислить часть count в Bool=True, сгруппировать по C1. Идеальный результат должен быть
C1 Portion
A 0.5
B 0
C 0.2
Я не совсем уверен, как этого добиться. Действительно ценю любую помощь
Ответ №1:
Вы можете выполнить условную агрегацию:
select c1, sum(case when bool then count else 0 end) / sum(count) ratio
from mytable
group by c1
Предполагается, что bool
это bool[ean]
тип данных, поэтому его можно использовать непосредственно в предикате условия.
Обратите внимание, что оба bool
и count
являются ключевыми словами языка в MySQL, следовательно, плохой выбор имен столбцов (приведенный выше запрос приведет к ошибке, если вы запустите его как есть).