Как получить отдельный счетчик столбца в зависимости от значения другого столбца?Как получить отдельный счет столбца, основанный на значении другого столбца
Я мог понять, что этого можно добиться, создав другую промежуточную таблицу, но я запускаю этот запрос в таблице с миллиардами строк, поэтому было бы лучше, если бы мы могли получить результат в одном запросе, а не создавать другую группу.
Вот образец кода для тестирования.
CREATE TABLE MYGROUP (Category,PERSON,Flag) AS
SELECT 'Cat1','A','1' FROM DUAL
UNION ALL SELECT 'Cat1','A','0' FROM DUAL
UNION ALL SELECT 'Cat1','A','1' FROM DUAL
UNION ALL SELECT 'Cat1','B','1' FROM DUAL
UNION ALL SELECT 'Cat1','B','0' FROM DUAL
UNION ALL SELECT 'Cat2','A','0' FROM DUAL
UNION ALL SELECT 'Cat2','A','0' FROM DUAL
UNION ALL SELECT 'Cat2','A','0' FROM DUAL
UNION ALL SELECT 'Cat2','B','1' FROM DUAL
UNION ALL SELECT 'Cat2','B','1' FROM DUAL
UNION ALL SELECT 'Cat2','B','0' FROM DUAL
UNION ALL SELECT 'Cat3','X','0' FROM DUAL
UNION ALL SELECT 'Cat3','Y','0' FROM DUAL;
Желаемый выход:
Category Count of Distinct Persons with Flag =1
Cat1 2
Cat2 1
Cat3 0
Причина выхода Там как A и B, с флагом = 1, поэтому рассчитывать 2 в первой строке и Существует только Б с флагом = 1, поэтому рассчитывать является 1 во второй строке подсчета Cat3 равно 0, поскольку нет ни в одной строке с флагом = 1
Вы перечислили почти все базы данных там; какой из них вы фактически используете? –
Его для оракула, добавил других, так как он может быть похож на других. – Thunder
Нет, ответ, который вы приняли, не будет работать на MySQL вообще, а также не будет работать на SQL Server, поскольку он не имеет функции 'DECODE()'. В будущем просто пометьте свою фактическую базу данных. –