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

我想找到那些有不止一种爱好的人

在我看来,最简单的方法就是利用现有的资源

我想找到那些有不止一种爱好的人

在我看来,最简单的方法就是利用现有的资源