【问题标题】:Which phone has got high sales in each year?每年哪款手机销量高?
【发布时间】:2017-09-11 03:12:08
【问题描述】:

我在 mysql 中有一个表。如何编写查询以找到销量最高的手机名称(每年 Sold_out 的最高数量)

--------------------------------------------
Phone      Sold_out      Month      Year
--------------------------------------------
iphone      3            Jan-15     2015
iphone      10           Feb-15     2015
samsung     4            March-15   2015
Lava        14           June-16    2016
Lenova      8            July-16    2016
Lenova      10           Sep-16     2016 
Motorola    8            Jan-17     2017
Nokia       7            Jan-17     2017
Nokia       3            Feb-17     2017
--------------------------------------------

我需要的结果是

-----------------------------
year      Phone      sales
-----------------------------
2015      iphone     13
2016      lenova     18
2017      Nokia      10
-----------------------------

【问题讨论】:

  • 你试过什么? Stack Overflow 不是代码编写服务,请围绕您尝试的解决方案添加更多详细信息
  • 如果两个品牌在同一年的销售额同样高怎么办?那么应该输出哪一个?

标签: mysql sql


【解决方案1】:

在派生表中,总销售额按 (year,phone) 组合计算。计算出总销售额后,应确定每年的所有顶部行(按销售额排名 = 1)。通过使用相关子查询和有子句,从每个组(年份)中识别第一行并显示为最终输出。

SELECT year,phone, sales_per_year
  FROM
      (
      SELECT year,phone,SUM(sold_out) AS sales_per_year
        FROM sales
      GROUP BY year,phone          
      ) o
 GROUP BY year,phone
 HAVING (
           SELECT COUNT(*)
             FROM 
                   (
                      SELECT year,phone,SUM(sold_out) AS sales_per_year
                        FROM sales
                      GROUP BY year,phone                          
                    ) i  
           WHERE i.year = o.year             
             AND i.sales_per_year > o.sales_per_year 
          ) < 1          
ORDER BY year,phone,sales_per_year DESC         

检查 sql fiddle 链接 http://sqlfiddle.com/#!9/ff096e/14

【讨论】:

  • 请尽量不要鼓励那些没有尝试解决问题的坏问题。
  • mysql 支持 ROW_NUMBER() 吗?
  • 你们为什么不鼓励回答?
  • 我试过了。我的表名是分析。我没有得到答案。
  • 你得到了什么结果?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多