【问题标题】:Get ID of maximum occurence in SQL获取 SQL 中出现次数最多的 ID
【发布时间】:2021-11-09 17:40:33
【问题描述】:

EpisodeIDs 是唯一的并且具有唯一的剧集顺序,但不同的episodeIDs 可以共享相同的SpellID。 我正在尝试选择,以便我可以找到每个SpellID 中顺序最高的EpisodeIDs。 我已经尝试了以下方法,但没有做它应该做的事情,有什么帮助吗?

这是一个例子 enter image description here 这个想法是只选择相同SpellID中的行,它们具有最高的顺序号

SELECT TOP(100) Spell_ID,Episode_ID, MAX(Episode_Order) AS M
From [dbo].[Client_MidEssex_Inpatient_Episodes_Landing]
Group by Spell_ID, Episode_ID

【问题讨论】:

  • 请提供几行样本数据和预期结果。 [对我来说]要准确了解您的需求并不容易。
  • 刚刚添加了一些额外的信息,希望对您有所帮助

标签: sql group-by ssms


【解决方案1】:

可能有更清洁的解决方案,但首先想到的是使用 cte

;with cte as (
select spell_id, MAX(episode_order) as M from [dbo].[Client_MidEssex_Inpatient_Episodes_Landing]
Group by Spell_ID
)
select t.spell_id, t.episode_id, t.episode_order from [dbo].[Client_MidEssex_Inpatient_Episodes_Landing] t
join cte on cte.spell_id = t.spell_id and cte.M = t.episode_order

【讨论】:

    【解决方案2】:

    想法是只选择相同 SpellID 中具有最高序号的行

    你可以使用窗口函数:

    select cmiel.*
    from (select cmiel.*,
                 rank() over (partition by spell_id order by episode_order desc) as seqnum
          from Client_MidEssex_Inpatient_Episodes_Landing cmiel
         ) cmiel
    where seqnum = 1;
    

    【讨论】:

      【解决方案3】:

      我在带有两个条件的内部连接语句中使用了两个选择列。因为两者只有唯一的组合,所以不需要第三个值,因此不需要 ID。感谢您的回复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-23
        • 2011-04-16
        • 2022-11-28
        • 2010-11-06
        相关资源
        最近更新 更多