Agrupar por categorías creadas dentro de la consulta en SQL.
Tengo una tabla en la que quiero agrupar tanto por categoría como por días. Sin embargo, quiero organizar los días en grupos separados y aparentemente no encuentro la forma de hacerlo.
Tabla:
| Days | Category | Values |
| 2 | A | 20 |
| 4 | B | 50 |
| 6 | A | 100 |
| 2 | A | 70 |
| 1 | B | 220 |
| 9 | A | 130 |
| 7 | A | 45 |
| 1 | A | 90 |
| 5 | B | 280 |
| 5 | B | 10 |
| 8 | A | 70 |
| 9 | B | 50 |
| 0 | A | 120 |
| 3 | B | 115 |
| 0 | B | 25 |
| 3 | B | 10 |
| 6 | A | 55 |
El resultado que me gustaría obtener:
| Days | Category | Values |
| 0-4 | A | 300 |
| 0-4 | B | 420 |
| 5-9 | A | 400 |
| 5-9 | B | 340 |
Basado en mi conocimiento actual esto es lo lejos que puedo llegar:
SELECT Days, Category, Value
FROM Table
GROUP BY Days, Category
Pero, por supuesto, no puedo crear los grupos de días. ¿Podrías por favor ayudarme con ello?
davy.ai
Puede utilizar la declaración
CASE
para crear bloques de días basados en sus valores, y luego agrupar por la nueva columna de bloques junto con la columna de categoría. Aquí está la consulta modificada:Esto creará una nueva columna de
Day_Bucket
basada en los valores de la columna deDays
. Si el valor es menor o igual a 4, se categorizará como ‘0-4’, de lo contrario se categorizará como ‘5-9’. Luego agrupamos por la nueva columnaDay_Bucket
y la columnaCategory
, y calculamos la suma de valores para cada grupo.El resultado será el siguiente: