Ofi*_* A. 2 sql t-sql sql-server select group-by
我有一些问题需要理解.
我有下一张桌子:
ID PROD PRICE
1 A 10
2 B 20
3 C 30
4 A 1
5 B 12
6 C 2
7 A 7
8 B 8
9 C 9
10 A 5
11 B 2
Run Code Online (Sandbox Code Playgroud)
我想获得所有产品的所有最低价格,这意味着我希望获得3条记录,即每个产品的最低价格.从上面的例子中,这是我想要的:
ID PROD MIN(PRICE)
4 A 1
11 B 2
6 C 2
Run Code Online (Sandbox Code Playgroud)
这是我写的查询:
select id, prod, min(price)
from A1
group by(prod);
Run Code Online (Sandbox Code Playgroud)
但这是我得到的记录:
ID PROD MIN(PRICE)
1 A 1
2 B 2
3 C 2
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,ID值是错误的,它只给我一些行计数器,而不是实际的ID值.
您可以在下一个链接查看
我做错了什么?
SELECT a.*
FROM A1 a
INNER JOIN
(
SELECT Prod, MIN(Price) minPrice
FROM A1
GROUP BY Prod
) b ON a.Prod = b.Prod AND
a.Price = b.minPrice
Run Code Online (Sandbox Code Playgroud)
对于 MSSQL
SELECT ID, Prod, Price
FROM
(
SELECT ID, Prod, Price,
ROW_NUMBER() OVER(Partition BY Prod ORDER BY Price ASC) s
FROM A1
) a
WHERE s = 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6826 次 |
最近记录: |