группа диапазоном цен

Скажите, что у меня есть таблица свойств недвижимости:

A  15,000
B  50,000
C 100,000
D  25,000

Я хотел бы сгруппировать их 0 - 49,999, 50 000 - 99 999 и 100 000 - 200 000

Таким образом, результат должен быть:

   0 -  49k (2)
 50k -  99k (1)
100k - 200k (1)

Существует ли способ сделать это в одном SQL-операторе? Я использую Пост-ГРЭС между прочим.

6
задан Alex Korban 11 June 2014 в 09:05
поделиться

2 ответа

Вы можете GROUP BY выражение, что-то вроде:

SELECT price/50000*50000 AS minPrice, 
    (price/50000+1)*50000-1 AS maxPrice, 
    COUNT(*)
FROM table
GROUP BY price/50000;
10
ответ дан 8 December 2019 в 17:22
поделиться

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

select t.range, count(*) as num
from
   (select case
       when price < 50000 then '0 - 49K'
       when price >= 50000 and price < 100000 then '50 - 99K'
       when price >= 100000 and price < 200000 then '100 - 199K'
       ...
       end
       as range,
       price
       from table) as t
group by range
4
ответ дан 8 December 2019 в 17:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: