gpt4 book ai didi

postgresql - Postgres : Link sequence date virtual table to real table

转载 作者:行者123 更新时间:2023-11-29 13:04:15 25 4
gpt4 key购买 nike

PostgreSQL 新手。

我有一些 SQL,它基本上列出了从 2/4/201310/7/2013 的一系列日期。例如:

select date(generate_series(DATE '20130402', DATE '20131007', interval '1' day))

输出:

"2013-04-02"
"2013-04-03"
"2013-04-04"
"2013-04-05"
"2013-04-06"

然后我从 myorder 表中得到另一个 SQL:

select date(date_created) as date_created1, count(id) from myorder group by date_created1 order by date_created1 desc

输出:

"2013-08-12;2"
"2013-08-08";1"
"2013-08-02";1"
"2013-08-01";1"

基本上,这显示了每天的订单总数。

我的问题是如何将第一个 SQL 链接到第二个 SQL,以便它输出日期并按顺序计数(按日期排序)。此外,如果在“myorder”表中找不到订单,它将显示“0”。

例如:

2013-08-11没有任何订单记录,所以计数栏会显示"0"

更多更少像这样:

"2013-08-12;2"
"2013-08-11;0"
"2013-08-10;0"
"2013-08-09;0"
"2013-08-08;1"
"2013-08-02;1"
"2013-08-01;1"

提前感谢您的帮助。

最佳答案

只需加入两者,如下:

SELECT dt.d AS date_created1, count(m.id)
FROM
(
SELECT date(d)
FROM generate_series(
DATE '20130402', DATE '20131007', interval '1' day
) AS d
) AS dt
LEFT JOIN myorder m ON m.date_created = dt.d
GROUP BY date_created1
ORDER BY date_created1 DESC

您还可以使用最小值/最大值来获取第一个和最后一个日期值。

关于postgresql - Postgres : Link sequence date virtual table to real table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com