Sql &引用;列必须出现在GROUP BY子句中;在时间戳上使用日期时
我有一个SQL查询,它统计具有给定创建日期的联系人。创建日期以毫秒为单位存储为unix时间戳,我正在使用Sql &引用;列必须出现在GROUP BY子句中;在时间戳上使用日期时,sql,postgresql,Sql,Postgresql,我有一个SQL查询,它统计具有给定创建日期的联系人。创建日期以毫秒为单位存储为unix时间戳,我正在使用to_timestamp方法正确格式化它: SELECT count(*) AS "Count", date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000)) AS "Create Date" FROM "contacts" GROUP BY "contacts"."createdate
to_timestamp
方法正确格式化它:
SELECT count(*) AS "Count", date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000)) AS "Create Date"
FROM "contacts"
GROUP BY "contacts"."createdate"
ORDER BY "contacts"."createdate" ASC
结果如下:
Count | Create Date
-----------------------------------------
1 | Sunday, February 1, 2015 12:00 AM
1 | Sunday, February 1, 2015 12:00 AM
1 | Wednesday, April 1, 2015 12:00 AM
1 | Wednesday, April 1, 2015 12:00 AM
1 | Wednesday, April 1, 2015 12:00 AM
SELECT count(*) AS "Count", date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000)) AS "Create Date"
FROM "contacts"
GROUP BY date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000))
ORDER BY "contacts"."createdate" ASC
我想按月对它们进行分组,因此对于上面的示例,我希望:
Count | Create Date
-----------------------------------------
2 | February 2015
3 | April 2015
我将SQL更改为以下内容:
Count | Create Date
-----------------------------------------
1 | Sunday, February 1, 2015 12:00 AM
1 | Sunday, February 1, 2015 12:00 AM
1 | Wednesday, April 1, 2015 12:00 AM
1 | Wednesday, April 1, 2015 12:00 AM
1 | Wednesday, April 1, 2015 12:00 AM
SELECT count(*) AS "Count", date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000)) AS "Create Date"
FROM "contacts"
GROUP BY date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000))
ORDER BY "contacts"."createdate" ASC
但收到一个错误:
ERROR: column "contacts.createdate" must appear in the GROUP BY clause or be used in an aggregate function
有什么方法可以正确执行吗?您可以参考“按编号选择”中的元素:
SELECT count(*) AS "Count", date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000)) AS "Create Date"
FROM "contacts"
GROUP BY date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000))
ORDER BY 2 ASC
您可以参考“按编号选择”中的元素:
SELECT count(*) AS "Count", date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000)) AS "Create Date"
FROM "contacts"
GROUP BY date_trunc('month', to_timestamp("contacts"."createdate"::double precision / 1000))
ORDER BY 2 ASC
这是因为按“联系人”排序的
,“createdate”ASC
这是因为按“联系人”排序的,“createdate”ASC
或更简单的按2个ASC排序的分组工作,谢谢@l-o-van-ingen!有关于如何以“月YYYY”格式显示的提示吗?当使用to_char(时间戳,'Month YYYY')
时,我在postgresql文档中得到:-2015年4月-2016年4月-2017年4月-2015年5月-2016年5月等检查。它甚至可能是一个合适的to_char
可以让你摆脱当前的日期。。。类似于选择count(*)作为“count”,将_char(“contacts”,“createdate”,“Month YYYY”)作为“Create Date”
…或者更简单的按2个订单分组,按2个asc
工作,谢谢@l-o-van-ingen!有关于如何以“月YYYY”格式显示的提示吗?当使用to_char(时间戳,'Month YYYY')
时,我在postgresql文档中得到:-2015年4月-2016年4月-2017年4月-2015年5月-2016年5月等检查。它甚至可能是一个合适的to_char
可以让你摆脱当前的日期。。。类似于选择count(*)作为“count”,选择_char(“contacts”,“createdate”,“Month YYYY”)作为“Create Date”
。。。