2015-09-12 2 views
0

У меня есть максимальные и минимальные значения цен в postgresql, и группируйте количество результатов в соответствии с разными диапазонами цен между этими значениями max и min, мой запрос выглядит ниже, любые идеи о том, как группа по запросу должен бытьGROUP по нескольким диапазонам в postgresql

 SELECT COUNT(*) 
     FROM sales_sale 
     WHERE transfer >='2004-02-01' AND transfer < '2012-02-01' 
     # GROUP BY RANGES OF PRICES BETWEEN LIST ITEMS (200, 500, 800,1100) 

ответ

1
SELECT range, 
     COUNT(*) 
FROM (
    SELECT item_id, 
      price, 
      CASE WHEN price < 200 THEN '< 200' 
       WHEN price BETWEEN 200 AND 500 THEN '200-500' 
       WHEN price BETWEEN 500 AND 800 THEN '500-800' 
       THEN price BETWEEN 800 AND 1100 THEN '800-1100' 
       WHEN price > 1100 THEN '> 1100' 
      END AS range 
    FROM sales_sale 
) range_table 
GROUP BY range; 

EDIT: Просто думал об этом, но ответ уже был принят, так что я не хочу, чтобы изменить свой ответ в целом.

SELECT CASE WHEN price < 200 THEN '< 200' 
      WHEN price BETWEEN 200 AND 500 THEN '200-500' 
      WHEN price BETWEEN 500 AND 800 THEN '500-800' 
      WHEN price BETWEEN 800 AND 1100 THEN '800-1100' 
      WHEN price > 1100 THEN '> 1100' 
     END, 
     COUNT(*) 
FROM sales_sale 
GROUP BY 1; 
+0

элементы списка являются динамическими, должен быть заменяемым с заполнителями – tunaktunak

+2

@tunaktunak. , , Это не вопрос, который вы задали. Это, кажется, хороший ответ на ваш вопрос. Я бы предложил вам задать другой вопрос, с более подробным описанием вашего фактического вопроса, выборкой данных и желаемыми результатами. –

Смежные вопросы