为每个项目和日期范围内的每个月计算库存中的项目数量 - mysql

马里奥

我有一个包含 3 列的表T1ProductBrandPurchasedDateSoldDateProductBrand代表产品的品牌。PurchasedDate包含我们购买产品的日期(格式为 yyyy-mm),SoldDate包含我们销售此产品的日期(同样以 yyyy-mm格式)例如:

ProductBrand  PurchasedDate  SoldDate
----------------------------------
Apple          2015-03      2015-05
Samsung        2014-01      2015-03
Sony           2016-02      2016-05 
Sony           2013-01      2013-08 
Apple          2015-05      2015-10 
LG             2011-02      2014-06 
Samsung        2017-02      2017-04 
LG             2016-01      2016-06 
LG             2018-06      2019-01

我想要一个表格,可以计算每个品牌和每个月(2010-01 年和 2019-12 年之间)我在这个特定月份的库存中有多少这个特定品牌的产品。也就是说,在这个例子中,我有两个 Apple 产品。第一个在 2015-03 和 2015-06 之间的库存中,第二个在 2015-04 和 2015-08 之间的库存中。所以我希望有一张表:

ProductBrand  YearMonthDate  NitemsInventory
------------  ------------   -------------------
Apple         2010-01               0
Apple         2010-02               0
...            ...                 ... 
Apple         2015-03               1
Apple         2015-04               2
Apple         2015-05               2
Apple         2015-06               2
Apple         2015-07               1
Apple         2015-08               1
Apple         2015-09               0
...            ...                 ...
Apple         2019-12               0

在同一张桌子上,我希望所有品牌都以与 Apple 相同的方式出现。因此,如果我们有n 个不同的品牌并且t是(2010-01 和 2019-12)之间的月数,则 end 数组将有n 次 t行。换句话说,我希望每个月查看每个品牌库存中的商品数量。

我正在使用 mysql,我想我已经尝试按 T1 的 ProductBrand 列进行分组。但是,这并没有达到我的期望。

蒂姆·比格莱森

我们可以用一些丑陋的大日历表来做到这一点:

SELECT
    t.ProductBrand,
    d.YearMonthDate,
    COUNT(t.ProductBrand) AS NitemsInventory
FROM
(
    SELECT DISTINCT ProductBrand FROM yourTable
) AS p
CROSS JOIN
(
    SELECT '2010-01' AS YearMonthDate UNION ALL
    SELECT '2010-02' UNION ALL
    SELECT '2010-03' UNION ALL
    ...
    SELECT '2015-03' UNION ALL
    SELECT '2015-04' UNION ALL
    ...
    SELECT '2019-12'
) AS d
LEFT JOIN yourTable t
    ON d.YearMonthDate BETWEEN t.PurchasedDate AND t.SoldDate AND
       p.ProductBrand = t.ProductBrand
WHERE
    t.productBrand IS NOT NULL
GROUP BY
    t.ProductBrand,
    d.YearMonthDate;

这是一个演示,显示了正在执行的查询:

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mysql为每个月的日期选择计数

来自分类Dev

如何从MYSQL中获取每个月的最大日期

来自分类Dev

MySql中每个组的已加入项目数

来自分类Dev

尝试构建一个SQL查询(MySQL),该查询计算一年中每个月每个设施的预订数量

来自分类Dev

如何从MySQL中具有日期数据的表中估计每个月的列值?

来自分类Dev

MySQL:选择日期范围内的项目,但如果某个月在数据库中没有任何数据,则返回 0

来自分类Dev

MySQL中每个月的每日运行总计

来自分类Dev

计算Powerpivot中每个月的未清项目总数

来自分类Dev

如何在laravel和mysql上获得一年中每个月分隔的总价值?

来自分类Dev

vb.net-mysql查询选择每个月的记录

来自分类Dev

从过去的每个月中选择数据-MySQL

来自分类Dev

Mysql查询周期数据到每个月

来自分类Dev

计算日期范围内每个日期的销售数量,PostgreSQL

来自分类Dev

MYSQL如何计算日期范围内的列总和

来自分类Dev

获取特定日期范围内每个月的行数

来自分类Dev

SQL:查找具有给定日期范围内每个月的数据的记录

来自分类Dev

MySQL:可以根据收到的每个订单的数量计算总库存成本吗?

来自分类Dev

在来自 PHP 和 Mysql 的 jquery 日期选择器中禁用给定范围内的日期

来自分类Dev

为每个用户(PHP、MySQL)创建一个不同数量的共享库存?

来自分类Dev

MySQL从日期范围列表生成每个日期

来自分类Dev

MySQL 8递归CTE为每个项目创建行

来自分类Dev

MySQL为每个类别选择前10个项目

来自分类Dev

如何在Python中为每个月的特定日期创建日期范围?

来自分类Dev

查找日期范围内的行数-MySQL

来自分类Dev

在日期范围内加入mysql

来自分类Dev

在MySQL中为每个用户记录访问的日期时间和退出的日期时间

来自分类Dev

为数组中的每个项目生成一个mysql查询

来自分类Dev

Mysql:在历史表中为每个键选择最新项目的算法

来自分类Dev

如何从MySQL查询中的每个项目获取一行

Related 相关文章

  1. 1

    Mysql为每个月的日期选择计数

  2. 2

    如何从MYSQL中获取每个月的最大日期

  3. 3

    MySql中每个组的已加入项目数

  4. 4

    尝试构建一个SQL查询(MySQL),该查询计算一年中每个月每个设施的预订数量

  5. 5

    如何从MySQL中具有日期数据的表中估计每个月的列值?

  6. 6

    MySQL:选择日期范围内的项目,但如果某个月在数据库中没有任何数据,则返回 0

  7. 7

    MySQL中每个月的每日运行总计

  8. 8

    计算Powerpivot中每个月的未清项目总数

  9. 9

    如何在laravel和mysql上获得一年中每个月分隔的总价值?

  10. 10

    vb.net-mysql查询选择每个月的记录

  11. 11

    从过去的每个月中选择数据-MySQL

  12. 12

    Mysql查询周期数据到每个月

  13. 13

    计算日期范围内每个日期的销售数量,PostgreSQL

  14. 14

    MYSQL如何计算日期范围内的列总和

  15. 15

    获取特定日期范围内每个月的行数

  16. 16

    SQL:查找具有给定日期范围内每个月的数据的记录

  17. 17

    MySQL:可以根据收到的每个订单的数量计算总库存成本吗?

  18. 18

    在来自 PHP 和 Mysql 的 jquery 日期选择器中禁用给定范围内的日期

  19. 19

    为每个用户(PHP、MySQL)创建一个不同数量的共享库存?

  20. 20

    MySQL从日期范围列表生成每个日期

  21. 21

    MySQL 8递归CTE为每个项目创建行

  22. 22

    MySQL为每个类别选择前10个项目

  23. 23

    如何在Python中为每个月的特定日期创建日期范围?

  24. 24

    查找日期范围内的行数-MySQL

  25. 25

    在日期范围内加入mysql

  26. 26

    在MySQL中为每个用户记录访问的日期时间和退出的日期时间

  27. 27

    为数组中的每个项目生成一个mysql查询

  28. 28

    Mysql:在历史表中为每个键选择最新项目的算法

  29. 29

    如何从MySQL查询中的每个项目获取一行

热门标签

归档