sql - seguir - Cuente el número de ocurrencias para cada valor único
porque no veo mis hashtags en instagram (4)
Debes cambiar la consulta a:
SELECT time_col, COUNT(time_col) As Count
FROM time_table
WHERE activity_col = 3
GROUP BY time_col
Este vl funciona correctamente.
Esta pregunta ya tiene una respuesta aquí:
- MySQL: Cuenta las ocurrencias de valores distintos 3 respuestas
Básicamente tengo una tabla similar a esta:
time.....activities.....length
13:00........3.............1
13:15........2.............2
13:00........3.............2
13:30........1.............1
13:45........2.............3
13:15........5.............1
13:45........1.............3
13:15........3.............1
13:45........3.............2
13:45........1.............1
13:15........3.............3
Un par de notas:
- Las actividades pueden ser entre 1 y 5.
- La longitud puede estar entre 1 y 3.
La consulta debería regresar:
time........count
13:00.........2
13:15.........2
13:30.........0
13:45.........1
Básicamente, para cada hora única quiero un recuento del número de filas donde el valor de las actividades es 3.
Entonces puedo decir:
At 13:00 there were X amount of activity 3s.
At 13:45 there were Y amount of activity 3s.
Entonces quiero un recuento para la actividad 1s, 2s, 4s y 5s. así que puedo trazar la distribución para cada tiempo único.
Sí, puedes usar group by
:
select time, activities, count(*) from table group by time, activities;
Si estoy entendiendo tu pregunta, ¿esto funcionaría? (tendrá que reemplazar con sus nombres de columna y tabla reales)
SELECT time_col, COUNT(time_col) As Count
FROM time_table
GROUP BY time_col
WHERE activity_col = 3
select time, coalesce(count(case when activities = 3 then 1 end), 0) as count
from MyTable
group by time
Salida:
| TIME | COUNT |
-----------------
| 13:00 | 2 |
| 13:15 | 2 |
| 13:30 | 0 |
| 13:45 | 1 |
Si desea contar todas las actividades en una consulta, puede hacer:
select time,
coalesce(count(case when activities = 1 then 1 end), 0) as count1,
coalesce(count(case when activities = 2 then 1 end), 0) as count2,
coalesce(count(case when activities = 3 then 1 end), 0) as count3,
coalesce(count(case when activities = 4 then 1 end), 0) as count4,
coalesce(count(case when activities = 5 then 1 end), 0) as count5
from MyTable
group by time
La ventaja de esto sobre la agrupación por actividades, es que devolverá un conteo de 0 incluso si no hay actividades de ese tipo para ese segmento de tiempo.
Por supuesto, esto no devolverá filas para segmentos de tiempo sin actividades de ningún tipo. Si necesita eso, deberá usar una combinación izquierda con la tabla que enumera todos los segmentos de tiempo posibles.