MySQL - 选择具有多列的百分比

时间:2018-03-14 18:02:26

标签: mysql percentage

我有一张类似于下图的表格

enter image description here

我的目标是为每个组织(即该电子表格中的每一行)编写一个应输出id的查询和一个名为pvt的列

pvt列的值应基于以下逻辑:

如果组织的交付百分比:

  1. 与其他车辆相比,使用汽车,超过 90%,然后pvt应为Cars }

  2. 与其他车辆相比,使用面包车以超过 90%的速度制作,pvt应为Vans }

  3. 与其他车辆相比,使用高速公路,超过 90%,然后pvt应为Coaches }

  4. 与其他车辆相比,使用高速公路,超过 90%,然后pvt应为Trucks }

  5. 如果这些车辆列没有达到组织交付的 90%,那么

    1. 如果Cars + Vans达到 90%,则pvt应为Cars & Vans
    2. 如果Coaches + Trucks达到 90%,则pvt应为Coaches & Trucks
    3. 作为后退,其他任何内容都应将pvt呈现为Mixed

      如果我要运行我想要的查询,我会得到这样的结果:

      enter image description here

      谢谢,所有。

1 个答案:

答案 0 :(得分:0)

可以这样做,

SELECT
CASE WHEN ((truck / t.vehicles) * 100) > 90 THEN 'Truck'
WHEN ((van / t.vehicles) * 100) > 90 THEN 'Van'
WHEN ((coach / t.vehicles) * 100) > 90 THEN 'Coach'
WHEN (((truck/ t.vehicles) * 100) + ((van / t.vehicles) * 100)) > 90 THEN 'Truck and Van'
WHEN (((coach / t.vehicles) * 100) + ((lorry/ t.vehicles) * 100)) > 90 THEN 'Lorry and Coach'
ELSE 'Mixed'
END AS `pvt`

FROM Table f
INNER JOIN (SELECT t.id,SUM(van) + SUM(truck) + SUM(coach) + SUM(lorry) AS `vehicles` FROM Table t GROUP BY t.id) t ON t.id=f.id