我试图在 SQL Server 的特定列中找到 n 个最大的数字。
我们可以很容易地找到一列中的最大值和第二个最大值。
但是我如何在列中找到 5 个最大值?
我试图在 SQL Server 的特定列中找到 n 个最大的数字。
我们可以很容易地找到一列中的最大值和第二个最大值。
但是我如何在列中找到 5 个最大值?
您为 MySQL 和 SQL Server 标记了这个。在 SQL Server 中,您可以使用TOP
:
SELECT TOP 5 yourColumn
FROM yourTable
ORDER BY someColumn DESC;
TOP
限制返回的行数。要获取具有最大/最小值的数据,您需要包含一个ORDER BY
.
在 MySQL 中,您将使用LIMIT
在 SQL Server 中执行此操作的另一种方法是使用row_number()
:
select id
from
(
select id, row_number() over(order by id desc) rn
from yourtable
) x
where rn <= 5
在 MySql 中,您可以[LIMIT {[offset,] row_count }]
像这样使用:
...
ORDER BY SomeField DESC
LIMIT @n;
对于 SQL Server,您可以使用TOP(n)
获取前 n 个:
SELECT TOP(@n) SomeFieldName
FROM TABLE
ORDER BY SomeField DESC
例如:
SELECT TOP 5 items_sold
FROM tbl_PRODUCT
ORDER BY items_sold dESC
更新:如果您有另一个families
具有产品表外键family_ID
的表,并且您想查找所有具有前 n 个家庭 id 的产品。然后你可以点这个:
SELECT *
FROM Products WHERE family_ID IN
(
SELECT TOP 5 family_ID
FROM families
ORDER BY family_ID DESC
)
更新 2:每个系列中最顶级的产品:
;WITH cte
AS
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY family_ID ORDER BY items_sold DESC) row_num
FROM @Products
)
SELECT * FROM cte
where row_num = 1
Order by family_ID
sql服务器
select min(val)
from your_table
where val in (select top 5 val from your_table order by val desc)
mysql
select min(val)
from your_table
where val in (select val from your_table order by val desc limit 5)