Sql server SQL Server组中计数的最大值
因此,我在下面的SQL代码中遇到了一些问题(我还是SQL新手,所以我可能做错了)。现在我想能够计算一个Emp_ID出现在客户ID旁边的次数,然后只显示出现次数最多的Emp_IDSql server SQL Server组中计数的最大值,sql-server,greatest-n-per-group,Sql Server,Greatest N Per Group,因此,我在下面的SQL代码中遇到了一些问题(我还是SQL新手,所以我可能做错了)。现在我想能够计算一个Emp_ID出现在客户ID旁边的次数,然后只显示出现次数最多的Emp_ID Temp table #RAttP |CUST_ID | EMP_NAME | EMP_ID | SOMETHING1 | SOMETHING2 | |:------:|:--------:|:------:|:----------:|:----------:| | 1 | John | 100
Temp table #RAttP
|CUST_ID | EMP_NAME | EMP_ID | SOMETHING1 | SOMETHING2 |
|:------:|:--------:|:------:|:----------:|:----------:|
| 1 | John | 100 | w/e | w/e |
| 1 | John | 100 | w/e | w/e |
| 1 | Jane | 200 | w/e | w/e |
| 2 | Jane | 200 | w/e | w/e |
我想要的答案是:
|CUST_ID | EMP_NAME | EMP_ID |
|:------:|:--------:|:------:|
| 1 | John | 100 |
| 2 | Jane | 200 |
我的代码是:
SELECT FL2.CUST_ID
,#RAttP.EMP_NAME
,#RAttP.EMP_ID
,FL2.MostSeen
FROM #RAttP
INNER JOIN
(SELECT DISTINCT FL1.CUST_ID
,MAX(FL1.AmtSeen) AS MostSeen
FROM (SELECT #RAttP.CUST_ID
,#RAttP.EMP_NAME
,#RAttP.EMP_ID
,COUNT(EMP_ID) AS AmtSeen
FROM #RAttP
GROUP BY #RAttP.CUST_ID, #RAttP.EMP_NAME, #RAttP.EMP_ID
) FL1
GROUP BY FL1.CUST_ID
)FL2
ON FL2.CUST_ID = #RAttP.CUST_ID
GROUP BY FL2.MostSeen, FL2.CUST_ID, #RAttP.EMP_NAME, #RAttP.EMP_ID
ORDER BY FL2.CUST_ID
您可以使用窗口功能进行以下操作:
SELECT CUST_ID, EMP_NAME, EMP_ID
FROM (
SELECT CUST_ID, EMP_NAME, EMP_ID,
ROW_NUMBER() OVER (PARTITION BY CUST_ID ORDER BY cnt DESC) AS rn
FROM (
SELECT CUST_ID, EMP_NAME, EMP_ID,
COUNT(EMP_ID) OVER (PARTITION BY CUST_ID, EMP_ID) AS cnt
FROM RAttP ) AS t) AS s
WHERE s.rn = 1
COUNT
与CUST\u ID,EMP\u ID
分区上的OVER
子句一起使用,返回EMP\u ID
出现在CUST\u ID
旁边的次数。第二级查询在行数
窗口函数的OVER
子句中使用此计数,以确定具有最大Emp\u ID
外观数的记录。这可以解决您的问题:
SELECT *
FROM
(
SELECT *, rank() OVER (PARTITION BY cust_id ORDER BY cnt DESC) AS rank
FROM
(
SELECT cust_id, emp_id, count(1) as cnt
FROM #RAttP
GROUP BY cust_id, emp_id
) AS a
) AS B
WHERE b.rank=1
对不起,我不明白你的要求。您确定样本数据有意义吗?您要查找的答案甚至不包含您查询中的
MostSeen
列。order by FL2.CUST_ID,count(*)?可能与@TabAlleman重复-甚至没有接近OP的requirementInteresting,我在主题行中问了这个问题,但我根本看不到想要的结果与计数有什么关系。现在这个问题还不清楚。