gpt4 book ai didi

sql - 排名显示所有用户良好。但是如何显示一个用户的排名呢?

转载 作者:行者123 更新时间:2023-12-02 09:13:06 25 4
gpt4 key购买 nike

我有这个 SQL 查询:

SELECT 
DENSE_RANK() OVER (ORDER BY s.rows DESC) AS Ranks,
Territory, TM_Name,
COALESCE(g.rows, 0) AS RXCount,
COALESCE(s.rows, 0) AS DelCounts,
COALESCE(nd.rows, 0) AS NotDeliveredCount,
COALESCE(trgt.rows, 0) AS Target,
e.TM_Emp_Id
FROM
tblEmployee e
LEFT JOIN
(SELECT EmpCode, SUM(RxGenerate) AS rows
FROM tbl_RX
GROUP BY EmpCode) g ON g.EmpCode = e.TM_Emp_Id
LEFT JOIN
(SELECT EmpCode, SUM(MedToPCount) AS rows
FROM tbl_MedicinToPatient
WHERE Status = 'Delivered'
GROUP BY EmpCode) s ON s.EmpCode = e.TM_Emp_Id
LEFT JOIN
(SELECT EmpCode, COUNT(*) AS rows
FROM tbl_MedicinToPatient
WHERE Status != 'Delivered'
GROUP BY EmpCode) nd ON nd.EmpCode = e.TM_Emp_Id
LEFT JOIN
(SELECT
EmpCode, CurrentTarget AS rows,
CreatedDate, RankOrder, T.PreviousTarget
FROM
(SELECT
EmpCode, CurrentTarget, CreatedDate,PreviousTarget,
RANK() OVER (PARTITION BY EmpCode ORDER BY CreatedDate DESC) RankOrder
FROM
tbl_Target) T
WHERE
RankOrder = 1) trgt ON trgt.EmpCode = e.TM_Emp_Id

它返回所需的输出。这对于每个用户来说都是完美计算排名的。但是当我在查询末尾添加 where 条件时,例如:

e.TM_Emp_Id = 101

它显示的排名为 1。对于每个用户,我都会得到相同的结果(即排名 1)。但我想显示原始排名。我该如何实现这一目标?提前致谢!

最佳答案

为此,您至少有 3 个简单的选择。

  1. 将整个查询封装到子查询中,使其看起来像

    select * 
    from (current code)
    where TM_Emp_ID = 101
  2. 与上面相同,只是将其设为 CTE:

    WITH MY_QUERY AS 
    (current code)
    SELECT *
    FROM MY_QUERY
    WHERE TM_EMP_ID = 101
  3. 与上面两个相同,只是使用临时表

关于sql - 排名显示所有用户良好。但是如何显示一个用户的排名呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49884929/

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