gpt4 book ai didi

javascript - SQL - 选择具有默认值的时间段上的数据

转载 作者:行者123 更新时间:2023-11-30 22:25:27 25 4
gpt4 key购买 nike

我想从表中选择数据,在 JavaScript 中获取结果并将其打印在图表中(x = 日期,y = 数字)

我有以下 DATA 表(注意:我试图将它放在 markdown 中,因此它显示为 HTML 表,但它似乎不起作用):

| date    | number |
|---------|--------|
| 2015-01 | 12 |
| 2015-02 | 7 |
| 2015-04 | 4 |

和以下 SQL 选择:

SELECT date_format(date, '%Y-%m') AS date, number
FROM DATA
WHERE date >= '2015-01' AND date <= '2015-05'
GROUP BY date
ORDER BY date;

这给了我与输出完全相同的表格。但是,如果没有记录月份,我想要的是每个月用 0 一行。比如数据库中没有记录三月,所以我要的结果:

| date    | number |
|---------|--------|
| 2015-01 | 12 |
| 2015-02 | 7 |
| 2015-03 | 0 |
| 2015-04 | 4 |
| 2015-05 | 0 |

表格转到 5 月,因为在 SELECT 中我想要 1 月到 5 月之间的每个月。

问题是:有没有办法在 SQL 中执行此操作,或者我是否必须在 JavaScript 中对结果进行后处理以在我的最终表中添加空月份?

谢谢你的帮助


编辑:开始日期和结束日期是可变的,可以涵盖几年。所以,我想可以用一个包含月份的特殊表格来做一些事情,但我不知道如何......如果答案是后处理,那还可以(令人失望但还可以^^)


edit2:问题是@mauro 所说的“间隙填充”。它在 MySQL 中看起来相当复杂,所以我将对我的请求进行后处理。

参见 How to fill date gaps in MySQL?

最佳答案

我将创建第二个表DATA2,其中每月一行 且数字为零。然后,而不是选择:

FROM DATA

我会选择:

FROM ( SELECT * FROM DATA UNION ALL SELECT * FROM DATA2 ) D

这样...如果 DATA 包含给定月份的值,您将从 DATA 获得总计,如果不...您将从 DATA2 获得零

关于javascript - SQL - 选择具有默认值的时间段上的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35383380/

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