【问题标题】:display most frequent string [closed]显示最频繁的字符串[关闭]
【发布时间】:2021-03-12 07:14:25
【问题描述】:

我有一个医院数据集,其中每位患者都接受了诊断。 我想向每位患者显示一次,并显示每位患者最常入院的诊断。 现在每个有多个诊断的患者出现在多行中。

数据集与此类似

$ Subject_id    diagnosis
 1112          SEIZURE
 1112          GASTROINTESTINAL BLEED
 1112          SEIZURE
 1113          FEVER

如何将多个诊断折叠并显示为一行并按最常用的诊断显示?

【问题讨论】:

标签: sql dataset frequency


【解决方案1】:

您可以使用窗口函数和聚合:

select sd.*
from (select subject_id, diagnosis, count(*) as cnt,
             row_number() over (partition by subject_id order by count(*) desc) as seqnum
      from t
      group by subject_d, diagnosis
     ) sd
where seqnum = 1;

注意:如果最常见的诊断有关联,则任意返回一行。如果您希望所有行都出现平局,请使用rank() 而不是row_number()

【讨论】:

  • 感谢您的帮助!
  • @hallvard 。 . .如果这回答了您的问题,您可以接受答案。
猜你喜欢
  • 2020-09-09
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 2014-10-31
  • 1970-01-01
相关资源
最近更新 更多