基于不同值的 WHERE 条件 SQL 求和

问题描述 投票:0回答:1

我有下表,我们称其为table_a:

区域 车辆名称 车辆状态
A 巴士A1 开始
A 巴士A2 开始
A 巴士A3 停止了
B B1号船 准备好
B B2船 停止了
B B3号船 开始
C 汽车C1 准备好
C 汽车C2 准备好
C 汽车C3 停止了

我想从 table_a 创建一个新表:

区域 无车辆 没有开始 没有准备好 没有停止
A 3 2 0 1
B 3 1 1 1
C 3 0 2 1

最有效的方法是什么?

例如

SELECT DISTINCT(ZONE) AS ZONE,
       SUM(IF ZONE = 'A' THEN ... IF ZONE = 'B' THEN ...
FROM table_a
sql mysql
1个回答
0
投票
SELECT Zone, COUNT(DISTINCT vehicle_name) AS no_of_vehicle, SUM(vehicle_status = 'Start') AS no_of_start, SUM(vehicle_status = 'Ready') AS no_of_ready, SUM(vehicle_status = 'Stopped') AS no_of_stopped FROM table_a GROUP BY Zone;

这个单个 SQL 查询使用条件聚合和按“区域”分组来实现所需的结果。

© www.soinside.com 2019 - 2024. All rights reserved.