- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近遇到了一个 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/
我正在使用 Chart.js 创建图表。我在数据库中存储了一些日期和销售额。在这里,我使用 ajax 请求从数据库中选取记录,并通过将数据划分为两个不同的数组 date["2017-12-18","2
我正在尝试创建一个销售报告,用户可以在其中查看每天、每周和每月的销售额。 这是我的 table : CREATE TABLE IF NOT EXISTS `sales_act` ( `id`
我有一张包含 customer_number、week 和 sales 的表。我需要检查每个客户是否连续 12 周没有销售,并创建一个 0/1 的标志。 我可以检查过去 12 周或特定时间范围,但
我尝试了一些方法,到目前为止,这是唯一没有抛出错误的方法,但结果不会在我的页面上回显,所以我不太确定发生了什么。 $query = "SELECT SUM(sales.total) AS sales_
我是一名优秀的程序员,十分优秀!