gpt4 book ai didi

mysql - 获取产品每月总销售额,缺口为 0

转载 作者:行者123 更新时间:2023-11-29 03:30:33 26 4
gpt4 key购买 nike

我最近遇到了一个 SQL 查询问题。我想要实现的目标是获取商店中的每种产品并显示每个月售出的产品数量。然而,有时这些产品有几个月没有售出,这意味着它们不会被展示。

例如,这是我现在得到的结果

      Article   Month  Sold
CN140027 6 312
CN140027 7 293
CN140027 12 122
CN140186 1 10
CN140186 4 2

虽然我想得到更多这样的东西

      Article   Month  Sold
CN140027 6 312
CN140027 7 293
CN140027 8 0
CN140027 9 0
CN140027 10 0
CN140027 11 0
CN140027 12 122
CN140186 1 10
CN140186 2 0
CN140186 3 0
CN140186 4 2

这是我目前正在使用的查询

SELECT k.artikelnr, Months.datefield as `Months`, IFNULL(SUM(k.menge),0) as `Quantity`
FROM store_shop_korb as k LEFT OUTER JOIN office_calendar AS Months
ON Months.datefield = month(k.date_insert)
WHERE k.date_insert BETWEEN "2014-12-01" AND "2015-12-31"
group by k.artikelnr, Months.datefield

我错过了什么?或者我做错了什么?非常感谢任何帮助。

提前致谢。

编辑:附加信息:

office_calendar 是日历表。它只包含月份作为注册表,从 1 到 12。

此外,我从名为“store_shop_korb”的表中获取商品/产品 ID,该表包含已下订单的所有行(因此它包含商品 ID、价格、每个订单的数量……)

最佳答案

这对我有用:

SELECT k.artikelnr, c.datefield AS `Month`, COALESCE(s.Quantity, 0) AS Sold
FROM (
SELECT artikelnr
FROM store_shop_korb
GROUP BY artikelnr
) k
JOIN office_calendar c
LEFT JOIN (
SELECT artikelnr, MONTH(date_insert) AS monthfield, SUM(menge) AS Quantity
FROM store_shop_korb
GROUP BY artikelnr, MONTH(date_insert)
) s ON k.artikelnr = s.artikelnr AND c.datefield = s.monthfield
ORDER BY k.artikelnr, c.datefield

如果你有一个文章表,你可以用它来代替子查询k。我基本上是在即时正常化。

解释:

基本上有 3 组数据连接在一起。第一个是一组不同的文章 (k),第二个是一组不同的月份 (c)。这两者不受限制地连接在一起,这意味着您将获得笛卡尔积(每个月的每篇文章 x)。然后将此结果左连接到每月的销售额,这样我们就不会丢失 0 个条目。

关于mysql - 获取产品每月总销售额,缺口为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289549/

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