我有一個關於在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