我正在尝试编写查询,并且在可能的情况下需要一些帮助。提前致谢。
我有一张从公共资源获取的设施数据表(约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子句,但是我还没办法让它做我想做的事情。
有什么想法吗?
怎么样
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,以显示一个有效的示例。