我有一个关于在Microsoft T-SQL中编写子查询的问题。从原始表中,我需要返回第二大宠物的人的姓名。我能够编写一个查询返回每人的perts数量,但我不确定如何编写一个子查询返回排名#2。SQL子查询返回等级2
原始表:
+—————————-——+———-————-+
| Name | Pet |
+————————————+————-————+
| Kathy | dog |
| Kathy | cat |
| Nick | gerbil |
| Bob | turtle |
| Bob | cat |
| Bob | snake |
+—————————-——+—————-———+
我有以下查询:
SELECT Name, COUNT(Pet) AS NumPets
FROM PetTable
GROUP BY Name
ORDER BY NumPets DESC
将返回:
+—————————-——+———-————-+
| Name | NumPets |
+————————————+————-————+
| Bob | 3 |
| Kathy | 2 |
| Nick | 1 |
+—————————-——+—————-———+
你的RDBMS的方式是什么? – potashin 2015-03-03 01:08:03
如果2个所有者拥有最大数量的宠物 - 是下一个要归还的宠物吗?如果有几个第二名的地方呢? – zerkms 2015-03-03 01:10:35
如果您使用的是MS SQL Server,则可以使用['ROW_NUMBER'](https://msdn.microsoft.com/en-us/library/ms186734.aspx)分配rownumber,然后选择row = 2。 – 2015-03-03 01:15:29