在SQL Server 2014中,我有一个表look_table,列出了用户在我的应用中使用相关user_id查找的所有关键字(带有重复项)。因此该表有2列:keyword,user_id。
目标:在表格中选择3个最受欢迎的关键字,找到所有这3个关键字的用户。
到目前为止,我列出了3个最受欢迎的关键字:
select top 3 keyword
from look_table
group by keyword
order by count(*) desc
但是,我无法获得一直在寻找所有这些关键字的用户。如果有人会帮忙,那就太好了。)
答案 0 :(得分:2)
您可以使用子查询:
SELECT user_id
FROM look_table
WHERE keyword IN (
select top 3 keyword
from look_table
group by keyword
)
GROUP BY user_id
HAVING count(distinct keyword) = 3
答案 1 :(得分:2)
如果你想要这三个,那就有点棘手了。这是一种方法:
with k as (
select top 3 keyword
from look_table
group by keyword
order by count(*) desc
)
select lt.user_id
from look_table lt join
k
on lt.keyword = k.keyword
group by lt.user_id
having count(distinct lt.keyword) = 3;