簡體   English   中英

SQLITE select 按組和每個組的限制結果

[英]SQLITE select by group and limit results for each group

我有以下 SQLITE 表:

COL1 COL2 COL3
山雀1 貓1 時間1
山雀2 三類 時間2
山雀3 貓1 時間3
山雀4 貓1 時間4
山雀5 三類 時間5
tit6 貓2 時間6
山雀7 貓1 時間7

我想 SELECT 所有按 COL2、WHERE COL2 == cat1 或 cat2 分組的行,但將每個組的結果限制為最多 2 行,並按 COL3 DESC 對結果進行排序。

因此,例如,在這種情況下,我只想得到:

COL1 COL2 COL3
山雀7 貓1 時間7
山雀4 貓1 時間4
tit6 貓2 時間6

是否可以通過(可能)一個或最多 2 個查詢來獲得此信息?

到目前為止,我嘗試了這個,但它沒有按預期工作:

SELECT * FROM "tablename" WHERE "COL2" = "cat1" OR "COL2" = "cat2" GROUP BY "COL2" ORDER BY "COL3" DESC LIMIT 2

謝謝您的幫助

過濾表並使用 ROW_NUMBER() window function:

SELECT COL1, COL2, COL3
FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY COL2 ORDER BY COL3 DESC) rn 
  FROM tablename  
)
WHERE rn <= 2
ORDER BY COL2, COL3 DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM