En el siguiente ejemplo se realiza un agrupamiento de datos, haciendo la sumatoria de los registros en base a condiciones, en una forma SQL standard, utilizando CASE WHEN THEN ELSE END
SELECTfecha,
SUM(CASE WHEN tipo = '1' THEN columna END) AS dato_uno,
SUM(CASE WHEN tipo = '2' THEN columna END) AS dato_dos,
SUM(CASE WHEN tipo = '3' THEN columna END) AS dato_tres
FROM tabla_con_informacion
GROUP BY fecha
ORDER BY fecha
LIMIT 4;
A partir de PostgreSQL 9.4, se puede utilizar la función FILTER, para realizar condiciones de agrupamiento, que discriminen cuando realizar un conteo de los datos.
SELECT fecha,
SUM(columna) FILTER(WHEN tipo = 1) AS dato_uno,
SUM(columna) FILTER(WHEN tipo = 2) AS dato_dos,
SUM(columna) FILTER(WHEN tipo = 3) AS dato_tres
FROM tabla_con_informacion
GROUP BY fecha
ORDER BY fecha
LIMIT 4;
Los filtros pueden ser utilizados con cualquier operador matemático, inclusive con COUNT(1) u otras funciones.