Dav*_*vid 6 sql postgresql group-by count
说我有一张房地产物业表:
A 15,000
B 50,000
C 100,000
D 25,000
Run Code Online (Sandbox Code Playgroud)
我想将它们分为0 - 49,999,5,000 - 99,999和100,000 - 200,000
所以结果应该是:
0 - 49k (2)
50k - 99k (1)
100k - 200k (1)
Run Code Online (Sandbox Code Playgroud)
有没有办法在一个SQL语句中执行此操作?我顺便使用Postgres.
Nic*_*hen 10
你可以进行GROUP BY
一次类似的训练:
SELECT price/50000*50000 AS minPrice,
(price/50000+1)*50000-1 AS maxPrice,
COUNT(*)
FROM table
GROUP BY price/50000;
Run Code Online (Sandbox Code Playgroud)
取决于您是否会接受语句中的子选择并仍将其称为一个语句。假设您希望您的范围扩展,带有 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
Run Code Online (Sandbox Code Playgroud)