gpt4 book ai didi

sql - 平均模式 - 在 SQL Server 中需要帮助进行计算

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

我需要通过 clinic 计算众数平均值.测试数据如下:

<表类="s-表"><头>诊所测试2<正文>A1232A1233A1234A1233A1233B1232B1232B1232B1232B1232B1234

我可以显示所有诊所的模式

SELECT TOP 1 test2, Clinic
FROM [JFF].[dbo].[Test_table]
GROUP BY clinic, test2
ORDER BY COUNT(*) DESC

但是,我想要每个诊所的模式,而不是所有诊所。我真正想要的是展示:

<表类="s-表"><头>诊所模式<正文>A1233B1232

任何帮助将不胜感激。谢谢。

最佳答案

我们可以使用窗口函数或分组来计算 Test2 值的出现次数,然后使用另一个窗口函数(在单独的操作中)按从多到少的顺序对计数进行排序,并仅选择最多的行:

WITH x as (
SELECT clinic, Test2, COUNT(*) as ct FROM [JFF].[dbo].[Test_table] GROUP BY clinic, test2
), y AS (
SELECT x.*, row_number() over(PARTITION BY clinic order by ct desc) rn FROM x
)
SELECT clinic, test2 FROM y WHERE rn = 1

如果您仍然觉得它可读/可理解,您也可以将其折叠起来:

WITH x as (
SELECT clinic, Test2, ROW_NUMBER() OVER(PARTITION BY clinic ORDER BY COUNT(*) DESC) as rn
FROM [JFF].[dbo].[Test_table]
GROUP BY clinic, test2
)
SELECT clinic, test2 FROM x WHERE rn = 1

如果您有两个具有相同模式的 Test2:

clinic test2
A123 2
A123 2
A123 5
A123 5

如果您同时想要它们,您可以将 ROW_NUMBER 切换为 DENSE_RANK 以同时返回它们

关于sql - 平均模式 - 在 SQL Server 中需要帮助进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65538019/

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