微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在PostgreSQL中按月和年对查询结果进行分组

如何解决在PostgreSQL中按月和年对查询结果进行分组

select to_char(date,'Mon') as mon,
       extract(year from date) as yyyy,
       sum("Sales") as "Sales"
from yourtable
group by 1,2

应Radu的要求,我将解释该查询

to_char(date,'Mon') as mon, :将“日期”属性转换为月的简短形式的定义格式。

extract(year from date) as yyyy :Postgresql的“提取功能用于从“日期”属性提取YYYY年。

sum("Sales") as "Sales" :SUM()函数将所有“ Sales”值相加,并提供区分大小写的别名,并使用双引号保持区分大小写。

group by 1,2注意:GROUP BY函数必须包含SELECT列表中不属于聚合的所有列(也就是,所有列不在SUM / AVG / MIN / MAX等函数之内)。这告诉查询应将SUM()应用于每个唯一的列组合,在这种情况下为月和年列。尽管可能最好使用完整的“ to_char(…)”和“ extract(…)”表达式以提高可读性,但“ 1,2”部分是简化的方式,而不是使用列别名。

解决方法

我在Postgres服务器上有以下数据库表:

id      date          Product Sales
1245    01/04/2013    Toys    1000     
1245    01/04/2013    Toys    2000
1231    01/02/2013    Bicycle 50000
456461  01/01/2014    Bananas 4546

我想创建一个查询,给出SUM了的Sales按月份和年份如下列并对结果进行分组:

Apr    2013    3000     Toys
Feb    2013    50000    Bicycle
Jan    2014    4546     Bananas

有没有简单的方法可以做到这一点?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。