我正在研究一个案例,其中我们有许多装满液体的储罐。测量液体量并将信息存储在数据库中。此更新每5分钟完成一次。这里存储了以下信息:


tankId
填充水平
时间戳记


我想读出数据库并将每个储罐归类为以下“填充水平”范围之一:


范围A:0-40%
范围B:40-75%
范围C:75-100%


最后,我希望有数量在A范围内,在B范围内,在C范围内的储罐。我可以选择DISTINCT TankId的填充水平,但这不起作用...

SELECT COUNT(DISTINCT tankId)
FROM TankDemo
WHERE (filllevel > 0 AND filllevel < 40);


显然,它不能为我提供每个量程的正确坦克数量。希望你们中的一些人对我如何获得这些数据有建议。

非常感谢

最佳答案

您可以使用CASE语句来做到这一点:

SELECT sum(
        CASE
            WHEN filllevel>=0 and filllevel<40
            THEN 1
            ELSE 0
        END) AS 'Range A',
        sum(
        CASE
            WHEN filllevel>=40 and filllevel<=79
            THEN 1
            ELSE 0
        END) AS 'Range B',
        sum(
        CASE
            WHEN filllevel>79 and filllevel<=100
            THEN 1
            ELSE 0
        END) AS 'Range C'
FROM TankDemo ;

10-06 14:37