【发布时间】:2019-08-10 09:54:30
【问题描述】:
假设有一个名为“Table1”的简单表,其中只有一个整数类型的“responseTime”列。 我希望在单个查询中获得“responseTime”值小于 10 的行数、小于 50 的行数和小于 100 的行数。
我需要在 Sybase 和 MySql 中运行它。
【问题讨论】:
假设有一个名为“Table1”的简单表,其中只有一个整数类型的“responseTime”列。 我希望在单个查询中获得“responseTime”值小于 10 的行数、小于 50 的行数和小于 100 的行数。
我需要在 Sybase 和 MySql 中运行它。
【问题讨论】:
你可以这样做
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 ...
【讨论】:
如果 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 是否想要一个单独的结果 set 或单个 result
【讨论】:
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
【讨论】: