2

entries日付に対するユーザー情報を格納する というテーブルがあります。ユーザーは、1 日 1 回データベースに入ることができます。いくつかのサンプルデータ:

+----+------------------+----------+
| id |      email       |   date   |
+----+------------------+----------+
|  1 | marty@domain.com | 04.09.13 |
|  2 | john@domain.com  | 04.09.13 |
|  3 | marty@domain.com | 05.09.13 |
+----+------------------+----------+

Xデータベースに同じ電子メールのエントリが何回あるかを調べる必要があります。たとえば、上記のデータの結果は次のようになります。ここでは、1 つのエントリの 1 つのインスタンスと 2 つのエントリの 1 つのインスタンスがあります。

+---------------+-------+
| times_entered | total |
+---------------+-------+
|             1 |     1 |
|             2 |     1 |
+---------------+-------+

私はいくつかのことを試しましたが、私が得ることができた最も遠いものは、各電子メールアドレスが見つかった回数を数えることです. ここから行う必要があるのは、これらの結果を照合し、それらのグループに対して別の COUNT を実行して合計を取得することだけのようですが、どうすればそれができるかわかりません。

4

3 に答える 3

4

通常、それは次のようなものです

select times_entered, count(*) from 
( select count(*) times_entered from entries group by email )
group by times_entered

ただし、MySQLで機能するかどうかはわかりません...

于 2013-09-06T06:21:03.410 に答える
1

以下は、電子メールごとのレコード数を取得します。

SELECT COUNT(1) AS times_entered, email
FROM entries
GROUP BY email

したがって、このクエリを派生テーブルとして使用すると、レコード数でグループ化してカウントを取得できます (emailサブクエリで列を選択する必要はありません。気にしないためです)。

SELECT times_entered, COUNT(1) AS total
FROM
(
    SELECT COUNT(1) AS times_entered
    FROM entries
    GROUP BY email
) x
GROUP BY times_entered

SQL フィドルのデモ

少し大きなデータ セットを使用した SQL Fiddle デモ

于 2013-09-06T06:20:37.953 に答える