Sql server 2008 MS SQL双分组方式
我有一张有两列的“霍布斯”表。看起来是这样的:Sql server 2008 MS SQL双分组方式,sql-server-2008,group-by,Sql Server 2008,Group By,我有一张有两列的“霍布斯”表。看起来是这样的: NAME | HOBBY Alice | sport Bob | painting ... | ... Yves | programming Zooey | theatre 行可以被复制。例如,爱好“绘画”的“鲍勃”可以出现两次、三次甚至更多次。 我想找到那些有不止一种爱好的人。我尝试使用如下查询: select NAME, HOBBY from Hobbys group by NAME, HOBBY order by 1
NAME | HOBBY
Alice | sport
Bob | painting
... | ...
Yves | programming
Zooey | theatre
行可以被复制。例如,爱好“绘画”的“鲍勃”可以出现两次、三次甚至更多次。
我想找到那些有不止一种爱好的人。我尝试使用如下查询:
select NAME, HOBBY
from Hobbys
group by NAME, HOBBY
order by 1, 2
但我不知道如何将查询结果用于按名称进行的第二次分组 试试这个
SELECT NAME,HOBBY
FROM Hobbys
GROUP BY NAME
HAVING COUNT(HOBBY) > 1
试试这个
SELECT NAME,HOBBY
FROM Hobbys
GROUP BY NAME
HAVING COUNT(HOBBY) > 1
要找到具有多个爱好的用户,只需按名称分组并统计不同的爱好
SELECT name
FROM hobbies
GROUP BY name
HAVING COUNT(DISTINCT hobby)>1
如果你想要用户和他们的爱好,你可以使用CTE
WITH cte AS (
SELECT name FROM hobbies GROUP BY name HAVING COUNT(DISTINCT hobby)>1
)
SELECT * FROM hobbies JOIN cte ON hobbies.name = cte.name
.要查找具有多个爱好的用户,只需按名称分组并统计不同的爱好即可
SELECT name
FROM hobbies
GROUP BY name
HAVING COUNT(DISTINCT hobby)>1
如果你想要用户和他们的爱好,你可以使用CTE
WITH cte AS (
SELECT name FROM hobbies GROUP BY name HAVING COUNT(DISTINCT hobby)>1
)
SELECT * FROM hobbies JOIN cte ON hobbies.name = cte.name
我想找到那些有不止一种爱好的人
在我看来,最简单的方法就是利用现有的资源
我想找到那些有不止一种爱好的人
在我看来,最简单的方法就是利用现有的资源