假设有一个名为“ Table1”的简单表,其中只有一个整数类型的“ responseTime”列。 我希望在单个查询中获得“ responseTime”值小于10的行数,小于50的行数和小于100的行数。
我需要在Sybase和MySql中运行它。
答案 0 :(得分:2)
SELECT
SUM(responseTime < 10),
SUM(responseTime >= 10 AND responseTime < 50),
SUM(responseTime >= 50 AND responseTime < 100)
FROM Table1
@ L.Scott Johnson发表评论后,我不确定您的目标是什么。因此,如果需要重复计算记录,这是另一种方法:
SELECT
SUM(responseTime < 10),
SUM(responseTime < 50),
SUM(responseTime < 100)
FROM Table1
答案 1 :(得分:0)
如果OP需要3个独立的行而不是字段,每个行都包含计数,则可以只使用UNION
SELECT count(*) WHERE responseTime < 10
UNION
SELECT count(*) WHERE responseTime <= 10 AND responseTime < 50
UNION
SELECT count(*) WHERE responseTime >= 50 AND responseTime < 100
这将返回3个单独的行,每行分别具有 count 。
尚不清楚OP是否需要单独的结果集合或单个结果
答案 2 :(得分:0)
您可以做类似的事情
SELECT
SUM(IF(responseTime<10,1,0)) as data1,
SUM(IF(responseTime<=10 AND responseTime<50,1,0)) as data 2,
SUM(IF(responseTime<100,1,0)) as data3
FROM table1
WHERE ...