applications、permissions、applications_permissions の 3 つのテーブルがあります。
|------------| |------------------------| |-----------|
|applications| |applications_permissions| |permissions|
|------------| |------------------------| |-----------|
| id | <-| application_id | | id |
| price | | permission_id |-> | name |
|------------| |------------------------| |-----------|
アプリケーションには、無料と商用の 2 つのカテゴリがあります (価格 = '0' および価格 != '0')。
ここで、すべてのアクセス許可について、アプリケーション全体の何パーセントがアクセス許可を参照しているかを知りたいと思います。そして、これは両方のカテゴリで
無料:
id, percentage
1 , 20.0230
2 , 0.0000
3 , 0.0312
...
商業:
id, percentage
1 , 18.0460
2 , 0.0000
3 , 0.0402
...
次のクエリを作成しましたが、アプリケーションのないアクセス許可 ID は含まれていません:/
SELECT (SELECT name FROM permissions WHERE id = applications_permissions.permission_id) AS "name",
100::float * COUNT(*)/(SELECT COUNT(name) FROM applications WHERE price = \'0\') AS "percent"
FROM applications, applications_permissions
WHERE applications.id = applications_permissions.application_id
AND applications.price = \'0\'
GROUP BY applications_permissions.permission_id
ORDER BY percent DESC')
どうすればいいですか?私は今数時間試してきました(そのクエリ、その他のJOIN)が、それは私を逃れます:/