[英]Group query and top n records SQL
如果我有一個表pid, sid
列為pid, sid
作為主鍵,並且具有price
和color
。
如何創建一個SQL查詢,該查詢可以獲取color
等於green
的每個pid
(產品ID)的最便宜價格?
例如我有行:
(1, 1, 10, "green")
(1, 2, 8, "green")
(1, 3, 11, "green")
(2, 1, 7, "green")
(2, 2, 15, "green")
(2, 3, 22, "green")
(3, 1, 10, "red")
(1, 2, 8, "red")
(1, 3, 11, "red")
然后我將收到: (1, 2, 8)->pid=1
和(2, 1, 7)->pid=2
。 沒有pid=3
因為它的顏色是紅色。
提前致謝。
SELECT pid, min(Price)
from table
Where Color='green'
group by pid
或者,如果您希望整行(並且您的sql平台支持排名)...
select *
from
(
select *, ROW_NUMBER() over (partition by pid order by price) rn
from #t
where color='green'
) v
where rn=1
嘗試這個,
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT pid, min(price) minPrice
FROM tableName b
) c ON a.pid = c.pid AND
a.price = c.minprice
WHERE a.color = 'green'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.