【问题标题】:How do i get the most sold product for every month there is in the database我如何获得数据库中每个月最畅销的产品
【发布时间】:2021-08-19 04:51:31
【问题描述】:

所以我有一个这样的数据库:

product_table: (product_id, name), date_table: (date_id, 日, 月, 年), sales_table: (sale_id, product_id, date_id, total_value)

我需要通过一个查询来获取“date_table”中存在的每个月最畅销的产品,我能做的唯一方法是在查询中指定月份和年份,但是我必须做一个查询每个月,这不是我需要的。

编辑:

这是我写的查询:

SELECT p.name, d.month, d.year, SUM(s.total_value) as total
FROM sales_table s
INNER JOIN product_table p ON s.product_id = p.product_id
INNER JOIN date_table d ON s.date_id = d.date_id
WHERE d.month = "$month" AND d.year = "$year" 
ORDER BY total DESC
LIMIT 1

正如我所说,我必须在这里给出我想要的月份和年份,但我需要每个月销售最多的产品(使用 sales_table 中的销售值而不是产品表的行数)查询!

【问题讨论】:

  • 您应该编辑您的问题并显示您编写的查询。

标签: mysql sql database select


【解决方案1】:

您可以将row_number() 与聚合一起使用。假设“最畅销”是指销售表中的计数:

select sd.*
from (select d.year, d.month, s.product_id, count(*) as cnt,
             row_number() over (partition by d.year, d.month order by count(*) desc) as seqnum
      from sales s join
           dates d
           on s.date_id = d.date_id
      group by d.year, d.month
     ) sd
where seqnum = 1;

【讨论】:

    猜你喜欢
    • 2020-01-28
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多