2
我有一個查詢:分組LIMIT 10在PostgreSQL
select
a.kli,
b.term_desc,
count(distinct(a.adic)) as count,
a.partner_id
from
ad_delivery.sgmt_kli_adic a
join wand.wandterms b on a.kli = b.term_code
join wand.wandterms c on b.term_desc=c.term_desc
join dwh.sgmt_clients e on a.partner_id::varchar = e.partner_id
join dwh.schema_names f on e.partner_id::integer = f.partner_id::integer
where
a.partner_id::integer in (f.partner_id)
and c.class_code = 969
group by a.partner_id, b.term_desc, a.kli
order by partner_id, count desc;
其帶回每PARTNER_ID某些條款計數。我希望能夠通過計數遞減到顯示前10個每個〜40 PARTNER_ID,以便
查詢結果看起來像
db=# SELECT * FROM xxx; pid | term_desc | count ----+------------+------ 4 | termdesc1 | 3434 4 | termdesc2 | 235 4 | termdesc3 | 367 4 | termdesc4 | 4533 5 | termdesc1 | 235 5 | termdesc2 | 567 5 | termdesc3 | 344 5 | termdesc4 | 56 (10k+ rows)
它看起來有一個錯誤:「錯誤:錯誤:語法錯誤在或接近」(「 位置:99」這是正確的後面的單詞RANK。我不熟悉RANK()函數,所以我不不知道如何去解決這個問題 – precose
好吧,試着用ROW_NUMBER()代替 – aleroot
HAVING子句中不允許使用Window函數,它們也不允許在WHERE子句中使用 – precose