我正在尝试编写查询,如果可能的话,希望得到一些帮助。提前谢谢。
我有一个设施数据表(~100k行),我从公共来源获取。该数据包含几个我认为是同一个地方(同名,城市,州)的记录,它们只有不同的套件号。另一个有趣的代码是我在数据上有一个选择计数器,只要有人选择其中一个设施,我就会增加。这样,我可以使用选择计数和一些其他权重计算来使结果在列表中显示得更高。
我要做的是写一个查询,当有人输入搜索查询时,它只会显示该设施的一条记录,选择次数最多的记录,并省略其余记录。
注意:我不想对数据进行任何预处理,因为它将每月重新加载。
Scheama: 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相同。
我确信在这里有一个和一个顶级条款,但我无法让它做我想要的。
思想?
答案 0 :(得分: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来展示一个有效的例子。
答案 1 :(得分:0)
WITH cteRowNum AS (
SELECT ID, Name, City, State, [Selection Count],
ROW_NUMBER() OVER(PARTITION BY Name, City, State ORDER BY [Selection Count] DESC) AS RowNum
FROM YourTable
)
SELECT ID, Name, City, State, [Selection Count]
FROM cteRowNum
WHERE RowNum = 1;