select to_char(date,'Mon') as mon,
extract(year from date) as yyyy,
sum("Sales") as "Sales"
from yourtable
group by 1,2
À la demande de Radu, je vais expliquer cette requête :
to_char(date,'Mon') as mon,
La fonction "date" : convertit l'attribut "date" dans le format défini de la forme courte du mois.
extract(year from date) as yyyy
: La fonction "extract" de Postgresql est utilisée pour extraire l'année YYYY de l'attribut "date".
sum("Sales") as "Sales"
: La fonction SUM() additionne toutes les valeurs "Sales", et fournit un alias sensible à la casse, la sensibilité à la casse étant maintenue par l'utilisation de guillemets doubles.
group by 1,2
: La fonction GROUP BY doit contenir toutes les colonnes de la liste SELECT qui ne font pas partie de l'agrégat (aka, toutes les colonnes qui ne sont pas à l'intérieur des fonctions SUM/AVG/MIN/MAX etc). Cela indique à la requête que la fonction SUM() doit être appliquée pour chaque combinaison unique de colonnes, qui dans ce cas sont les colonnes mois et année. La partie "1,2" est un raccourci au lieu d'utiliser les alias de colonnes, bien qu'il soit probablement préférable d'utiliser les expressions complètes "to_char(...)" et "extract(...)" pour plus de lisibilité.