SQL-запрос - несколько подсчетов в нескольких условиях - PullRequest
0 голосов
/ 19 марта 2019

Скажем, есть простая таблица с именем «Table1» с одним столбцом «responseTime» целочисленного типа. Я хочу получить количество строк со значением responseTime меньше 10, количество строк меньше 50 и количество строк меньше 100 в одном запросе.

Мне нужно запустить это в Sybase и MySql.

Ответы [ 3 ]

2 голосов
/ 19 марта 2019
SELECT 
    SUM(responseTime < 10),
    SUM(responseTime >= 10 AND responseTime < 50),
    SUM(responseTime >= 50 AND responseTime < 100)
FROM Table1

После @ L.Scott Johnson comment я не уверен, какова ваша цель.Итак, вот другой подход, если вам нужны записи с двойным счетом:

SELECT 
    SUM(responseTime < 10),
    SUM(responseTime < 50),
    SUM(responseTime < 100)
FROM Table1
0 голосов
/ 20 марта 2019

Вы могли бы сделать что-то вроде

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 ...
0 голосов
/ 19 марта 2019

ЕСЛИ ОП хотел 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 отдельных строки с соответствующим счетом в каждойстрока.

Неясно, хочет ли OP получить отдельный результат установить или один результат

...