sql - 在 Postgresql 中对每月结果的多个日期进行分组
问题描述
我在 Postgres 服务器上有下表,该表始终使用新日期进行更新(最早的日期是 3 年前),但为了简单起见,我们只显示 3 条记录:
id date1 date2 date3
1245 01/04/2018 05/04/2018 03/05/2018
1255 01/04/2018 01/06/2018 04/06/2018
1231 03/05/2018 07/05/2018 07/06/2018
1234 01/04/2017 01/04/2017 01/06/2018
我想创建一个 sql 视图,该视图将为我提供每种日期类型的总单位数
month date1 date2 date3
Jun 0 1 3
May 1 1 1
Apr 2 1 0
Apr17 1 1 0
有没有一种简单的方法可以做到这一点?到目前为止,我的 sql 看起来像
CREATE OR REPLACE VIEW monthly_view
AS
SELECT row_number() OVER (ORDER BY b.id) AS id,
'month',
count(*) as date1,
count(*) as date2,
count(*) as date3
FROM mytable b
GROUP BY month
ORDER BY month desc
但显然行不通
解决方案
经测试!
Luffydude,你想做坏事,但那是解决方案;)
--所有月份 allmonths 为 ( 从 tmp_a 中选择 to_char(date1, 'TMmon') as mm 联盟 从 tmp_a 中选择 to_char(date2, 'TMmon') as mm 联盟 从 tmp_a 中选择 to_char(date3, 'TMmon') as mm ), --count_in_date1 count_in_date1 为 ( 选择 t1.mm, count(t2.date1) as count_in_date1 从 allmonths t1 left join tmp_a t2 在 to_char(t2.date1, 'TMmon') = t1.mm 通过...分组 t1.mm ), --count_in_date2 count_in_date2 为 ( 选择 t1.mm, 计数(t2.date2)作为count_in_date2 从 allmonths t1 left join tmp_a t2 在 to_char(t2.date2, 'TMmon') = t1.mm 通过...分组 t1.mm ), --count_in_date3 count_in_date3 为 ( 选择 t1.mm, 计数(t2.date3)作为count_in_date3 从 allmonths t1 left join tmp_a t2 在 to_char(t2.date3, 'TMmon') = t1.mm 通过...分组 t1.mm ) --join所有计数一起 选择 t1.mm、count_in_date1、count_in_date2、count_in_date3 从 count_in_date1 t1、count_in_date2 t2、count_in_date3 t3 其中 t1.mm=t2.mm 和 t1.mm=t3.mm
推荐阅读
- angular - [已解决]Angular Material Dialog: dialogRef.afterClosed() 订阅未触发
- javascript - 禁用除 div 之外的整个身体
- github - 有没有办法使用 github API 将文件夹上传到 github 存储库
- amazon-web-services - 如何使用 REST API 网关同步运行 AWS Step Functions
- typescript - 如何让 Jest 覆盖仅出口行?
- android - 数字键盘模式下的键盘在三星 Note 8 上的尺寸越来越大
- javascript - 为什么 !== 在我的 facotrchain 函数中起作用,但在 Javascript 中却不是 ===
- blazor - 在 Jelastic 云中托管 blazor webassembly
- android - getDownloadUrl 不起作用它说找不到符号方法 getDownloadUrl
- c# - PX.Data.Maintenance.PXSiteLockout+DBLock+定义