簡體   English   中英

組查詢和前n條記錄SQL

[英]Group query and top n records SQL

如果我有一個表pid, sid列為pid, sid作為主鍵,並且具有pricecolor

如何創建一個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.

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