我想要计算有多少行使用相同的catid并按总计命令查询。
id | catid | name
0 | 1 | foo
1 | 1 | bar
2 | 2 | paint
我已尝试COUNT(catid)
,但这需要GROUP BY
,我不想压缩行。
我怎么能这样做?
答案 0 :(得分:0)
你想要窗口功能吗?
select t.*, count(*) over (partition by catid) as cat_cnt
from t
order by cat_cnt, catid;
我应该注意,如果您不想查看总数,可以将窗口函数放在order by
中:
select *
from t
order by count(*) over (partition by catid), catid
答案 1 :(得分:0)
也许您可以将GROUP BY作为单独的SELECT运行,然后加入?
E.g。
select orig.*, summ.totals
from t
join (select count(cat_id) totals
from t
group by cat_id) summ
on t.cat_id = summ.cat_id;