我正在研究一个案例,其中我们有许多装满液体的储罐。测量液体量并将信息存储在数据库中。此更新每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 ;