SQL查询-在多个条件下的多个计数

时间:2019-03-19 19:03:02

标签: mysql sql sybase

假设有一个名为“ Table1”的简单表,其中只有一个整数类型的“ responseTime”列。 我希望在单个查询中获得“ responseTime”值小于10的行数,小于50的行数和小于100的行数。

我需要在Sybase和MySql中运行它。

3 个答案:

答案 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 ...