小编典典

从设施列表中获取子数据

sql

我正在尝试编写查询,并且在可能的情况下需要一些帮助。提前致谢。

我有一张从公共资源获取的设施数据表(约10万行)。该数据包含有关我认为是同一地点(相同名称,城市,州)的几条记录,但它们具有不同的套房编号。另一个有趣的代码是,我在数据上有一个选择计数器,每当有人选择其中一项功能时,我就会递增该数据。这样,我可以将选择计数与其他一些权重计算一起使用,以使结果在列表中显示更高。

我想做的是编写一个查询,当有人输入搜索查询时,它将仅显示该设施的一条记录,该记录具有最高的选择计数,而忽略其余的记录。

注意:我不想对数据进行任何预处理,因为它将每月重新加载。

示意图:ID名称地址1地址2城市州邮政编码电话选择计数

示例搜索:“ women”

ID  Name                        City        State   Selection Count
1   Brigham & Women's Hospital  Boston      MA      22
2   Brigham & Women's Hospital  Cambridge   MA      0
3   Brigham & Women's Hospital  Boston      MA      5
4   Brigham & Women's Hospital  Boston      MA      1
5   Brigham & Women's Hospital  Orlando     FL      3
6   Woman's Hospital of Detroit Detroit     MI      100
7   Brigham & Women's Hospital  Boston      MA      0
8   Woman's Hospital of Detroit Detroit     MI      55

我想要的是一个包含1,2,5,6的结果集

1,3,4,7相同,因此带回顶部选择计数。6和8相同。

我敢肯定,这里的某处有一个having和top子句,但是我还没办法让它做我想做的事情。

有什么想法吗?


阅读 213

收藏
2021-05-30

共1个答案

小编典典

怎么样

select id, name, city, state, selcount from t 
where exists
(
  select 1 from
  (select name, city, state, max(selcount) selcount
     from t 
    group by name, city, state) s
  where s.name = t.name and s.city = t.city and s.state = t.state and s.selcount = t.selcount
)

我为此构建了一个SQL Fiddle,以显示一个有效的示例。

2021-05-30