从设备列表获取子数据(Getting sub data from a list of facilit

2019-09-18 05:03发布

我想编写一个查询,如果可能想一些帮助。 提前致谢。

我有我从公共源获取设施数据(10万〜行)的表。 这些数据包含了什么,我会认为是同一个地方(同一个名称,城市,州),他们只是有不同的房间号数的记录。 代码的其他有趣的一点是,我有我随时增加有人选择的设施之一的数据选择计数器。 这样一来,我可以使用选择与其他一些权重计算计数一起,使结果显示在列表中较高。

我所试图做的是编写一个查询,当有人输入搜索查询,它会显示只有一个设施备案,具有最高的选择数量,而忽略休息。

注:我不想做任何预处理的数据,因为它是会得到重新加载每月。

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。

我相信,有具有在这里顶条款的地方,但我一直没能得到这个做我想做的。

思考?

Answer 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捣鼓这个显示的工作示例。



Answer 2:

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;


文章来源: Getting sub data from a list of facilities