解き方がわからない問題で困っています。私のテーブル「myTable」は次のようになります。
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| one | varchar(10) | YES | | NULL | |
| two | varchar(10) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
mysql> SELECT * FROM myTable;
+----+-----------------+------------+
| id | one | two |
+----+-----------------+------------+
| 1 | cat | steve |
| 2 | cat | steve |
| 3 | cat | adam |
| 4 | dog | john |
| 5 | dog | adam |
| 6 | dog | alice |
| 7 | mouse | peter |
| 8 | mouse | peter |
| 9 | mouse | peter |
+----+-----------------+------------+
私が求めているのは、「1」の一意の値ごとに「2」の一意の値の数を返すクエリです。つまり、犬 3 (3 つの一意の名前) 猫 2 (2 つの一意の名前) マウス 1 が得られます。 (1 つの一意の名前)
私は周りを検索しましたが、正しい答えを見つける方法がわかりません。
SELECT one, two, COUNT(two) AS nr FROM myTable GROUP BY one, two ORDER BY one;
どんな提案でも大歓迎です!前もって感謝します。