SQL с ведрами для столбцов - PullRequest
       9

SQL с ведрами для столбцов

0 голосов
/ 14 сентября 2018

Я пытаюсь записать запрос sql в столбцы, представляющие блоки данных:

Например, если мои данные:

title | value
A     | 1.2
A     | 2.3
B     | 0.5
B     | 0.8
B     | 1.7

И я хочу, чтобы мой вывод выглядел так:

title | count(0-1) | count(1-2) | count(2+)
A     | 0          | 1          | 1
B     | 2          | 1          | 0

Мне удалось получить этот результат, написав несколько запросов, которые, например, включали:

WHERE value >= 0 AND value < 1

чтобы получить таблицу, которая представляла каждое ведро, затем объединить таблицы. Моя проблема в том, что я запрашиваю очень большую базу данных, поэтому выполнение нескольких запросов занимает много времени.

Есть ли автоматический способ сделать это в SQL-запросе?

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Вы можете сделать:

select title, 
       sum(case when value >= 0 and value < 1 then 1 else 0 end),
       sum(case when value >= 1 and value < 2 then 1 else 0 end),
       sum(case when value >= 2 then 1 else 0 end) 
from table t
group by title'
0 голосов
/ 14 сентября 2018

вариант использования, когда

select sum( case when value>=0 and value<1 then 1 else 0 end )
as b_0_1',
sum( case when value>=1 and value<2 then 1 else 0 end )as b_1_2,
sum( case when value>2 then 1 else 0 end ) as b_2 ,tittle
from t group by title
0 голосов
/ 14 сентября 2018

Вы можете использовать условное агрегирование:

select title,
       sum(case when value >= 0 and value < 1 then 1 else 0 end) as bucket_0_1,
       sum(case when value >= 1 and value < 2 then 1 else 0 end) as bucket_1_2,
       sum(case when value >= 2 then 1 else 0 end) as bucket_2pl
from t
group by title;
...