[英]return a max row based off a count column in select
I am trying to display 1 row based off the maximum number of visits. 我正在尝试根据最大访问次数显示1行。 I already have a count function in my select clause. 我的select子句中已经有一个count函数。
This is what I already have for code: 这是我已经拥有的代码:
select
pat.pat_id "pat id"
,DEP.DEPARTMENT_NAME "DEPT NAME"
,COUNT (DEP.DEPARTMENT_NAME) "VISITS BY DEPT"
FROM PAT_ENC PAT
JOIN CLARITY_DEP DEP ON PAT.DEPARTMENT_ID = DEP.DEPARTMENT_ID
GROUP BY PAT.PAT_ID
,DEP.DEPARTMENT_NAME
Based on the code above here are my current results: 根据上面的代码,这是我当前的结果:
PAT ID DEPT NAME VISITS BY DEPT
Z116547 OPS PEDI REHAB OT 177
Z116547 SSH REHAB PT 85
Z116547 SSH REHAB SLP 62
Z130422 LIB WOUND CENTER 119
Z130422 WEY UROLOGY 1
Z130422 SSH AMBULATORY CARE 1
I'm trying to write code that will only display the row that has the maximum number of visits for each Pat ID. 我正在尝试编写仅显示每个Pat ID具有最大访问次数的行的代码。
The results I am trying to get is 我想要得到的结果是
PAT ID DEPT NAME VISITS BY DEPT
Z116547 OPS PEDI REHAB OT 177
Z130422 LIB WOUND CENTER 119
I know I need a sub query, just not sure where and how it should look. 我知道我需要一个子查询,只是不确定在哪里以及应该如何看。 Thanks. 谢谢。
One method uses window functions: 一种方法使用窗口函数:
SELECT pd.*
FROM (SELECT pat.pat_id, DEP.DEPARTMENT_NAME,
COUNT(*) as cnt,
ROW_NUMBER() OVER (PARTITION BY DEP.DEPARTMENT_NAME ORDER BY COUNT(*) DESC) as seqnum
FROM PAT_ENC PAT JOIN
CLARITY_DEP DEP
ON PAT.DEPARTMENT_ID = DEP.DEPARTMENT_ID
GROUP BY PAT.PAT_ID, DEP.DEPARTMENT_NAME
) pd
WHERE seqnum = 1;
Note that I removed your column aliases. 请注意,我删除了您的列别名。 Having to fiddle around with escaping column names just makes it more complicated to write queries. 不得不摆弄转义的列名只会使编写查询变得更加复杂。
use row-number() 使用row-number()
select * from (select
pat.pat_id "pat id"
,DEP.DEPARTMENT_NAME "DEPT NAME"
,COUNT (DEP.DEPARTMENT_NAME) "VISITS BY DEPT",
row_number() over(partition by pat.pat_id order by COUNT (DEP.DEPARTMENT_NAME) desc ) as rn
FROM PAT_ENC PAT
JOIN CLARITY_DEP DEP ON PAT.DEPARTMENT_ID = DEP.DEPARTMENT_ID
GROUP BY PAT.PAT_ID
,DEP.DEPARTMENT_NAME
) a where a.rn=1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.