gpt4 book ai didi

sql-server - SQL Server 中的最大行数和最小行数

转载 作者:行者123 更新时间:2023-12-03 23:59:03 24 4
gpt4 key购买 nike

这是一张员工表,

Id    Name     Salary
1 A.J 7000
2 B.S 30000
3 C.K 2000
4 D.O 10000
5 E.L 500

现在我想显示 1st 最高薪水,然后是 最低 薪水,然后是 2nd 最高薪水,然后是 2nd 最低薪水依此类推...直到第 n 行。

预期输出,

Id     Name    Salary
2 B.S 30000
5 E.L 500
4 D.O 10000
3 C.K 2000
1 A.J 7000

最佳答案

没有显式 COUNT 的另一种变体。 SQL Fiddle .

也尝试将此行添加到 fiddle 中的示例数据 (6, 'X.Y', 7000)。查询仍然返回正确的结果。

DECLARE @Employee TABLE (ID int, Name nvarchar(50), Salary money);

INSERT INTO @Employee (ID, Name, Salary) VALUES
(1, 'A.J', 7000),
(2, 'B.S', 30000),
(3, 'C.K', 2000),
(4, 'D.O', 10000),
(5, 'E.L', 500);

WITH
CTE
AS
(
SELECT *, NTILE(2) OVER (ORDER BY Salary, ID) AS n
FROM @Employee AS E
)
SELECT
*
,SIGN(n-1.5) AS s
,SIGN(n-1.5)*Salary AS ss
,ROW_NUMBER() OVER(PARTITION BY n ORDER BY SIGN(n-1.5)*Salary DESC) AS rn
FROM CTE
ORDER BY rn, ss DESC;

结果

ID    Name    Salary      n       s       ss          rn
2 B.S 30000.00 2 1.0 30000.00000 1
5 E.L 500.00 1 -1.0 -500.00000 1
4 D.O 10000.00 2 1.0 10000.00000 2
3 C.K 2000.00 1 -1.0 -2000.00000 2
1 A.J 7000.00 1 -1.0 -7000.00000 3

我在输出中留下了中间列来说明它是如何工作的。

关于sql-server - SQL Server 中的最大行数和最小行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32541036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com