我想展示出售的汽车数量和颜色。
我需要展示桌上的所有汽车品牌:汽车。销售的汽车总量(见表: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
table: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 | |
我希望你能帮助我。 祝你有愉快的一天。
答案 0 :(得分: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在进行数据透视查询时非常好)