【发布时间】:2021-06-15 16:50:49
【问题描述】:
堆栈溢出的人!
感谢您抽出宝贵时间阅读此问题。我想要完成的是仅从一张表中透视一些数据。
原始表有多个特定事件的日期时间条目(例如,添加客户时add_time 和客户丢失时lost_time)。
这是交易表两行的一部分:
| id | add_time | last_mail_time | lost_time |
|---|---|---|---|
| 5 | 2020-03-24 09:29:24 | 2020-04-03 13:20:29 | NULL |
| 310 | 2020-03-24 09:29:24 | NULL | 2020-04-03 13:20:29 |
我想创建这个表的视图。一种视图,每个不同的日期都有一行,并计算该特定时间的事件数。
我有工作代码,如下所示:
SELECT DISTINCT
change_datetime,
(SELECT COUNT(add_time) as add_time_count FROM deals WHERE add_time::date = change_datetime),
(SELECT COUNT(lost_time) as lost_time_count FROM deals WHERE lost_time::date = change_datetime)
FROM (
SELECT
add_time::date AS change_datetime
FROM
deals
UNION ALL
SELECT
lost_time::date AS change_datetime
FROM
deals
) AS foo
WHERE change_datetime IS NOT NULL
ORDER BY
change_datetime;
但这有一些难看的 O(n2) 查询并且需要很多时间。
有没有更好、更高效的方法来实现这一目标?
谢谢!!
【问题讨论】:
标签: sql postgresql pivot subquery