You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.5 KiB

SELECT c.iso, c.full_name, COUNT(*) restaurants
FROM restaurant r
INNER JOIN currency c ON c.iso = r.currency
GROUP BY c.iso
ORDER BY 3 DESC
LIMIT 10;
SELECT min_price
FROM restaurant
WHERE currency = 'EUR'
ORDER BY min_price
GROUP BY '[3,7)'::int4range;
/*WITH series AS (
SELECT generate_series(
(SELECT MIN(min_price) FROM restaurant),
(SELECT MAX(min_price) FROM restaurant WHERE min_price != 'NaN'::NUMERIC),
10
) low_bound_price
)
SELECT '[' || s.low_bound_price || ',' || (s.low_bound_price+10) || '[', COUNT(*) restaurants
FROM series s
LEFT JOIN restaurant r
ON r.min_price >= s.low_bound_price
AND r.min_price < (s.low_bound_price + 10)
GROUP BY low_bound_price;*/
-- COUNT(*) FILTER ?
SELECT CASE WHEN min_price < 5 THEN '< 5'
WHEN min_price >= 5 AND min_price < 10 THEN '[5;10['
WHEN min_price >= 10 AND min_price < 15 THEN '[10;15['
WHEN min_price >= 15 AND min_price < 20 THEN '[15;20['
WHEN min_price >= 20 AND min_price < 30 THEN '[20;30['
WHEN min_price >= 30 AND min_price < 50 THEN '[30;50['
WHEN min_price >= 50 AND min_price < 100 THEN '[50;100['
WHEN min_price >= 100 AND min_price < 200 THEN '[100;200['
WHEN min_price >= 200 AND min_price < 500 THEN '[200;500['
WHEN min_price >= 500 AND min_price < 1000 THEN '[500;1000['
WHEN min_price >= 1000 THEN '>= 1000'
END min_price_range,
COUNT(*) nb
FROM restaurant
GROUP BY min_price_range;