我正在尝试编写一个查询,如果可能的话希望获得一些帮助。提前致谢。
我有一个从公共来源获取的设施数据表(约 10 万行)。该数据包含几条我认为是同一地点(相同名称、城市、州)的记录,它们只是有不同的套房号。另一个有趣的代码是,我有一个关于数据的选择计数器,只要有人选择其中一个设施,我就会增加该计数器。这样,我可以使用选择计数以及一些其他权重计算来使结果在列表中显示得更高。
我想做的是编写一个查询,当有人输入搜索查询时,它将仅显示该设施的一条记录,即选择计数最高的记录,并忽略其余记录。
注意:我不想对数据进行任何预处理,因为它将每月重新加载。
架构:
ID
姓名
地址1
地址2
城市
状态
压缩
电话
选择计数
搜索示例:“女性”
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小提琴 http://sqlfiddle.com/#!3/c6b4c/6为此展示一个工作示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)