【发布时间】:2020-04-03 22:17:00
【问题描述】:
我想加入下面的表格,因为某些表格中有空天,我生成了包含所有日期的日期并使用 DISTINCT ON 来消除结果中的重复行。
我加入了他们的日期和用户。 (一般还有其他用户,我只是加了一个。)
请注意,每个表都是在不同的 CTE 中创建的。我只包含了生成的日期和查询的连接部分。
我的查询中唯一的问题是,它没有给我“潜在客户”表中的所有数据。 如何获取每个表中的所有数据?
WITH dates AS (SELECT d::DATE AS DATE FROM GENERATE_SERIES('2018-01-01', CURRENT_DATE, '1 day'::INTERVAL) d )
SELECT DISTINCT ON (dates.date) dates.date,
calls.user,
leads.leads_total,
calls.calls_total,
deals.deals_total,
cases.cases_total
FROM dates
LEFT JOIN calls ON
calls.call_date = dates.date
LEFT JOIN leads ON
leads.leads_date = dates.date
AND calls.user = leads.user
LEFT JOIN cases ON
cases.case_date= dates.date
AND calls.user = cases.user
LEFT JOIN deals ON
deals.deals_date = dates.date
AND calls.user = deals.user
WHERE
dates.date >= '2019-11-01'
AND dates.date <= '2019-11-10'
GROUP BY
dates.date calls.owner_name,
leads.leads_total,
calls.calls_total,
deals.deals_total,
cases.cases_total
ORDER BY
dates.date DESC
潜在客户表:
+------------+-----------+-------------+
| leads_date | user | leads_total |
+------------+-----------+-------------+
| 11/9/2019 | James Joe | 4 |
| 11/8/2019 | James Joe | 10 |
| 11/7/2019 | James Joe | 7 |
| 11/6/2019 | James Joe | 12 |
| 11/5/2019 | James Joe | 8 |
| 11/4/2019 | James Joe | 8 |
| 11/2/2019 | James Joe | 2 |
| 11/1/2019 | James Joe | 4 |
+------------+-----------+-------------+
来电表:
+-----------+-----------+-------------+
| call_date | user | calls_total |
+-----------+-----------+-------------+
| 11/8/2019 | James Joe | 47 |
| 11/7/2019 | James Joe | 55 |
| 11/6/2019 | James Joe | 52 |
| 11/5/2019 | James Joe | 54 |
| 11/4/2019 | James Joe | 48 |
| 11/1/2019 | James Joe | 51 |
+-----------+-----------+-------------+
交易表:
+------------+-----------+-------------+
| deals_date | user | deals_total |
+------------+-----------+-------------+
| 11/8/2019 | James Joe | 1 |
| 11/7/2019 | James Joe | 1 |
| 11/6/2019 | James Joe | 3 |
| 11/4/2019 | James Joe | 16 |
| 11/1/2019 | James Joe | 1 |
+------------+-----------+-------------+
病例表:
+-----------+-----------+-------------+
| case_date | user | cases_total |
+-----------+-----------+-------------+
| 11/8/2019 | James Joe | 5 |
| 11/7/2019 | James Joe | 4 |
| 11/6/2019 | James Joe | 12 |
| 11/4/2019 | James Joe | 5 |
| 11/1/2019 | James Joe | 2 |
+-----------+-----------+-------------+
期望的输出:
【问题讨论】:
标签: sql postgresql join duplicates left-join