說我有房地產的一個表:組按價格範圍
A 15,000
B 50,000
C 100,000
D 25,000
我想他們按0 - 49,999 50,000 - 99,999和100,000 - 200000
所以結果應該是:
0 - 49k (2)
50k - 99k (1)
100k - 200k (1)
有沒有辦法在一個SQL語句中做到這一點?順便說一句,我正在使用Postgres。
說我有房地產的一個表:組按價格範圍
A 15,000
B 50,000
C 100,000
D 25,000
我想他們按0 - 49,999 50,000 - 99,999和100,000 - 200000
所以結果應該是:
0 - 49k (2)
50k - 99k (1)
100k - 200k (1)
有沒有辦法在一個SQL語句中做到這一點?順便說一句,我正在使用Postgres。
您可以GROUP BY
的李毅華,這樣的事情:
SELECT price/50000*50000 AS minPrice,
(price/50000+1)*50000-1 AS maxPrice,
COUNT(*)
FROM table
GROUP BY price/50000;
我想你甚至可以用GROUP BY表達式中提到的tvanfosson來避免子查詢。儘管你應該測量哪種方式更好。 – 2010-01-04 14:00:00
取決於你是否會接受語句中的子查詢,還自稱是一個聲明。假設您希望擴展範圍,使用case語句來設置範圍的子查詢,然後按範圍進行外部選擇分組。如果所有的範圍都是相同的大小,那麼將會更容易,因爲您可以將範圍大小除以範圍大小。
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
http://stackoverflow.com/questions/232387/in-sql-how-can-you-group-by-in-ranges – 2010-01-04 13:07:45
要誠實,並接受你最近的問題的答案。 – hsz 2010-01-04 13:11:31