0

我想显示出售了多少辆汽车以及它们的颜色。

我需要显示表中的所有汽车品牌:汽车。售出的汽车总数(见表:car_sales)以及这些汽车中有多少是红色或蓝色的。

它应该如下所示:

Car        | totalQuantity | Quantity red | Quantity blue
------------------------------------------------------------
BMW        |      3        |      1       |        2
Mercedes   |      1        |      1       |        0
Audi       |      2        |      2       |        0 
Chevrolet  |      0        |      0       |        0
Nissan     |      1        |      0       |        1 
Renault    |      0        |      0       |        0
Peugeot    |      0        |      0       |        0

这是我的两张桌子:

表:汽车

  Car_id   | Car_brand         
------------------------
  2356     | BMW        
  2359     | Mercedes   
  2358     | Audi 
  2544     | Chevrolet         
  2152     | Nissan  
  2245     | Renault
  2253     | Peugeot 

表:car_sales

  sales_id     | Car_brand | color     | car_id  | sales_date
---------------------------------------------------------------
  45654556     | BMW       |  red      |  2356   | 03.02.2009 
  63654552     | Mercedes  |  red      |   ...   |    ... 
  45654565     | BMW       |  blue     |   ...   |    ...
  41456921     | Audi      |  red      |         |
  36636545     | Nissan    |  blue     |         |
  45654565     | BMW       |  blue     |         |
  41456921     | Audi      |  red      |         |

我希望你能帮助我。祝你今天过得愉快。

4

1 回答 1

1

如果颜色固定为红色和蓝色,则以下应该起作用:

select c.brand, 
       count(*) as total_quantity,
       count(case when cs.color = 'red' then 1 end) as quantity_red,
       count(case when cs.color = 'blue' then 1 end) as quantity_blud
from cars c
  join car_sales cs on c.car_id = cs.car_id
group by c.brand;

如果您有更多颜色(但仍然是固定编号),则可能需要查看PIVOT运算符(搜索此站点,有一个标签)。

如果您有未知数量的颜色,这将是一团糟,因为您需要动态 SQL 和存储过程 - 在这种情况下,最好在报告工具中完成类似的操作(例如 Excel 在执行数据透视查询方面非常好)

于 2013-11-13T23:05:48.190 回答