SQL: cuente las ocurrencias de valores
sql group by sum (2)
Si está trabajando en un Oracle, usaría la función PIVOT:
SELECT *
FROM fruit t
PIVOT (COUNT(fruit) AS cnt
FOR(fruit) IN (''apple'' AS apple
, ''pear'' AS pear) );
Más detalles y muestras completas en PIVOT / UNPIVOT que encontrarás en la web (aquí https://oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1 )
Dejar
user | fruit
------------
1 | apple
1 | apple
1 | apple
2 | apple
2 | apple
1 | pear
Intentando combinar count
y group by
para obtener
user | apples | pears
---------------------
1 | 3 | 1
2 | 2 | 0
Cualquier sugerencia sobre cómo proceder es apreciada.
Use expresiones de case
para hacer un conteo condicional:
select user,
count(case when fruit = ''apple'' then 1 end) as apples,
count(case when fruit = ''pear'' then 1 end) as pears
from tablename
group by user