mysql 如何打印max(item_bought_count)?[关闭]

tvz2xvvm  于 2023-05-21  发布在  Mysql
关注(0)|答案(1)|浏览(184)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
我正在解决Danny的8周SQL挑战的案例研究1的问题5。我在这一点上卡住了。我写了下面的代码

select
  customer_id,
  product_name,
  count(sales.product_id) as 'item_bought_count',
  dense_rank() over(partition by customer_id order by count(sales.product_id) desc) as 'purchase_rank'
from sales
join menu on sales.product_id = menu.product_id
group by customer_id, sales.product_id ;

并给出以下输出

但我需要以下输出

问题:哪个项目最受每位顾客欢迎?
在这个查询中,你可以看到预期的图像,我想打印每个客户的产品的最大item_bought_count。我使用密集排名对所有这些进行排序。现在我只需要为每个客户取出具有密集秩=1的行。我不知道该怎么做。有什么建议吗?
还有一件事我在mysql工作台中编写查询,因此它与internet上提供的sql server解决方案和帮助有很大的不同

wfsdck30

wfsdck301#

SELECT customer_id, product_name, item_bought_count
FROM (
    SELECT 
        customer_id,
        product_name,
        COUNT(sales.product_id) AS item_bought_count,
        DENSE_RANK() OVER (PARTITION BY customer_id ORDER BY COUNT(sales.product_id) DESC) AS purchase_rank
    FROM sales
    JOIN menu ON sales.product_id = menu.product_id
    GROUP BY customer_id, sales.product_id
) AS subquery
WHERE purchase_rank = 1;

相关问题