我有一個像這樣的sqlite資料庫
price category_id product_id
100000 89 1
2000 88 2
50000 89 3
我想提取每個類別的產品ID的前5位和后5位(每個類別中最高和最低的產品)
我寫了這個
SELECT *
FROM sql_data_users.products
GROUP BY product_id, category_id
ORDER BY price ASC
LIMIT10
但是它給了我10行,而不是10*len(category_id) 為了使解決方案更加完整,我想添加另一個查詢,并將順序改為ASC,然后將兩個查詢聯合起來,這可能嗎,怎么做?
uj5u.com熱心網友回復:
你將使用視窗函式:
select t.*
from (select t.*,
row_number() over(partition by 類別 order by 價格asc) as seqnum_asc,
row_number() over(partition by 類別 order by 價格 desc) as seqnum_desc
from t
) t
where seqnum_asc < = 5 or seqnum_desc <= 5
order by category, pricedesc;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/327127.html
標籤:
