9

スキーマが次のようになっているとします。

First Name | Last Name | Age | ID
====================================
John         Smith       18    123
John         Smith       21    234
John         Smith       19    123
Cathy        Zhang       20    144
Cathy        Zhang       20    144
Jackie       Chan        35    456

それぞれの後にある個別のペアの数を数えたいとします(名、姓)。そのため、出力は次のようになります。

John         Smith       3
Cathy        Zhang       1
Jackie       Chan        1

私は最初にできると思います:

SELECT FirstName,LastName,Age,ID,COUNT(*);

その後

SELECT FirstName,LastName,COUNT(*)

より良いアプローチはありますか?

4

3 に答える 3

12

それぞれの個別の名、姓の数を返すには、とを使用COUNTGROUP BYます。

SELECT FirstName, LastName, COUNT(*)
FROM TableName
GROUP BY FirstName, LastName

上記の例では、Zhangのカウントが2であることを意味していると思います。

- 編集

私があなたの最新のコメントを正しく理解しているなら、あなたはまた使用したいと思いますDISTINCT

SELECT FirstName, LastName, Age, Id, COUNT(*)
FROM (SELECT DISTINCT FirstName, LastName, Age, Id FROM TableName) T
GROUP BY FirstName, LastName, Age, Id

幸運を。

于 2013-01-23T04:26:28.977 に答える
2

使ってみてください

SELECT firstName, lastName, count(1) FROM name_tab GROUP BY firstName, lastName;
于 2013-01-23T04:26:42.470 に答える
2

してみてください:

SELECT 
    FirstName, 
    LastName, 
    COUNT(*) 
FROM (
        SELECT DISTINCT * FROM YourTable 
    ) X
GROUP BY FirstName, LastName
于 2013-01-23T04:36:39.397 に答える