gpt4 book ai didi

mysql - 两个表之间的复杂MySQL查询

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

我这里有一个非常复杂的查询,至少对我来说是这样。

这是一张包含汽车发布日期的表格(其中 model_key = 320D):

+------------+-----------+
| date_key | model_key |
+------------+-----------+
| 2003-08-13 | 320D |
| 2005-11-12 | 320D |
| 2007-02-11 | 320D |
+------------+----------+

然后我有一张包含日常购买的表格(其中 model_key = 320D):

+------------+-----------+-----------+
| date_key | model_key | sal_quant |
+------------+-----------+ ----------+
| 2003-08-13 | 320D | 0 |
| 2003-08-14 | 320D | 1 |
| 2003-08-15 | 320D | 2 |
| 2003-08-16 | 320D | 0 |
...
| 2005-11-12 | 320D | 2 |
| 2005-11-13 | 320D | 0 |
| 2005-11-14 | 320D | 4 |
| 2005-11-15 | 320D | 3 |
...
| 2007-02-11 | 320D | 1 |
| 2007-02-12 | 320D | 0 |
| 2007-02-13 | 320D | 0 |
| 2007-02-14 | 320D | 0 |
...
+------------+-----------+-----------|

我想知道 N 天内每次发布后按天计算的汽车销量总和。

我想要一个像这样的表格(假设分析 4 天):

+-----------------+
| sum(sal_quant) |
+-----------------+
| 3 |
| 1 |
| 6 |
| 3 |
+-----------------+

这意味着,在新车发布的第一天,就售出了 3 辆 BMW 320D,在第二天,就售出了一辆,……以此类推。

现在我有以下查询:

SELECT SUM(sal_quant) 
FROM daily_sales
WHERE model_key='320D'
AND date_key IN (
SELECT date_key FROM car_release_dates WHERE model_key='320D')

但这只给我第一个发布日的总和。我怎样才能得到接下来的日子?

谢谢。

最佳答案

我想在发布日期之前不可能销售汽车。所以你可以简单地对 date_key 进行分组:

SELECT date_key, SUM(sal_quant) 
FROM daily_sales
WHERE model_key='320D'
GROUP BY date_key
ORDER BY date_key DESC
LIMIT 4

如果可以在发布日期之前销售汽车,请添加一个 WHERE 子句:

AND date_key >= (
SELECT date_key FROM car_release_dates WHERE model_key='320D')

编辑:根据您的评论,您可以使用 INNER JOIN 将查询限制在多个发布日期的四天内。例如:

SELECT ds.date_key, SUM(ds.sal_quant) 
FROM daily_sales ds
INNER JOIN car_release_dates crd
ON crd.model_key = ds.model_key
AND ds.date_key BETWEEN crd.date_key
AND DATE_ADD(crd.date_key, INTERVAL 4 DAY)
WHERE ds.model_key='320D'
GROUP BY ds.date_key
ORDER BY ds.date_key DESC

关于mysql - 两个表之间的复杂MySQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1782399/

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