【问题标题】:How to make a query for each year?如何查询每一年?
【发布时间】:2018-12-07 08:08:52
【问题描述】:

我想问一个问题:每年哪个生产商销售的汽车最多?我可以编写一个查询来定义年份,但是每年自动列出它的方法是什么?

SELECT producer, COUNT(type) AS counter
FROM `car` 
INNER JOIN producer ON car.producer= producer.id 
WHERE produce_year = 2000 
GROUP BY type 
ORDER BY COUNT(type) DESC 
LIMIT 1

【问题讨论】:

  • 您能提供一些示例数据并期待结果吗?
  • 请提供样本数据
  • 您需要在您的选择中引入produce_year。您的分组依据不正确,应该是按生产者分组。
  • 我认为应该根据生产商销售汽车产生的价值来进行排名。如果可能,请提供表的架构和一些示例数据。
  • 您使用的是哪个 MySQL 版本?

标签: mysql sql


【解决方案1】:

将年份添加到GROUP BY。删除WHERE 子句。

SELECT producer, produce_year, COUNT(type) AS counter
FROM `car` 
INNER JOIN producer ON car.producer = producer.id 
GROUP BY producer, produce_year 
ORDER BY COUNT(type) DESC 

【讨论】:

  • 这将如何每年只返回一个生产者?
  • @JoakimDanielson,是这个问题吗?没有样本数据和没有预期的结果让我猜到了,也许我错了……
  • 每年哪个生产商的汽车销量最高?
  • @JoakimDanielson,我将等待样本数据和预期结果。并了解 OP 使用的是哪个 MySQL 版本。
【解决方案2】:

这将起作用:

select * from (SELECT producer, COUNT(type) as cou
,RANK() OVER (PARTITION BY produce_year ORDER BY COUNT(type)) AS myrank
FROM car c 
INNER JOIN producer p ON c.producer= p.id  
GROUP BY  produce_year) 
where myrank=1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多