私は'users'
テーブルを持っています:
user_id | prov_platform | first_name | last_name
--------|-----------------|--------------|-------------------
1 | Facebook | Joe | Bloggs
2 | Facebook | Sue | Barker
3 | | John | Doe
4 | Twitter | John | Terry
5 | Google | Angelina | Jolie
そして、私は元々、users テーブルにあるさまざまなソーシャル プラットフォーム タイプすべてのリストを、それぞれの横にカウントを付けて返したいと考えていたので、次のように考えました。
SELECT
IFNULL(prov_platform, 'Other') AS prov_platform,
COUNT(*) AS platform_total
FROM users
GROUP BY prov_platform
ORDER BY platform_total DESC
その結果、次のようになりました。
prov_platform | platform_total
---------------|-----------------
Facebook | 2
Twitter | 1
Google | 1
Other | 1
しかし、ここで、このクエリにさらにいくつかのフィールドを追加したいと考えています。「allround_total」と「percentage」。したがって、上記のレコードセットは次のようになります。
prov_platform | platform_total | allround_total | percentage
---------------|----------------|----------------|---------------
Facebook | 2 | 5 | 40%
Twitter | 1 | 5 | 20%
Google | 1 | 5 | 20%
Other | 1 | 5 | 20%
これは、混乱する前に得た限りです。
SELECT
u.prov_platform,
COUNT(*) AS platform_total,
allround_total,
allround_total/platform_total*100 AS percentage
FROM
users AS u
INNER JOIN (
SELECT COUNT(*) AS allround_total FROM users
) AS allround_total
GROUP BY
prov_platform
ORDER BY
platform_total DESC
これは「allround_total」フィールドを返しますが、これは機能しますが、パフォーマンスにどれだけ適しているかはわかりません。私がワークアウトできないのは、パーセンテージを正しく機能させる方法です。現在、上記のクエリはエラーを返します。
「フィールド リスト」の不明な列「platform_total」
私は近づいていると思います。私はただ一線を越えて高く評価されるプッシュが必要です。