首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在postgresql中按月和年分组查询结果

在postgresql中按月和年分组查询结果
EN

Stack Overflow用户
提问于 2013-07-05 23:18:24
回答 6查看 179.6K关注 0票数 197

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
Apr    2013    3000     Toys
Feb    2013    50000    Bicycle
Jan    2014    4546     Bananas

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-07-05 23:26:59

代码语言:javascript
复制
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,:将"date“属性转换为定义的短格式month。

extract(year from date) as yyyy:Postgresql的" extract“函数用于从"date”属性中提取YYYY年份。

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

group by 1,2:GROUP BY函数必须包含选择列表中不属于聚合的所有列(也称为SUM/AVG/MIN/MAX等函数中不包含的所有列)。这告诉查询应该对每个唯一的列组合应用SUM(),在本例中是month和year列。"1,2“部分是一种速记形式,而不是使用列别名,不过最好使用完整的"to_char(...)”和"extract(...)“表达式以提高可读性。

票数 251
EN

Stack Overflow用户

发布于 2014-11-19 02:14:01

我不敢相信被接受的答案有这么多人支持--这是一种可怕的方法。

下面是正确的方法,使用date_trunc

代码语言:javascript
复制
   SELECT date_trunc('month', txn_date) AS txn_month, sum(amount) as monthly_sum
     FROM yourtable
 GROUP BY txn_month

这是一种糟糕的做法,但如果你使用

代码语言:javascript
复制
 GROUP BY 1

在一个非常简单的查询中。

您还可以使用

代码语言:javascript
复制
 GROUP BY date_trunc('month', txn_date)

如果您不想选择日期。

票数 378
EN

Stack Overflow用户

发布于 2014-10-04 04:02:20

实际上,to_char可以让你一下子找到年份和月份!

代码语言:javascript
复制
select to_char(date('2014-05-10'),'Mon-YY') as year_month; --'May-14'
select to_char(date('2014-05-10'),'YYYY-MM') as year_month; --'2014-05'

或者在上面用户示例的情况下:

代码语言:javascript
复制
select to_char(date,'YY-Mon') as year_month
       sum("Sales") as "Sales"
from some_table
group by 1;
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17492167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档