我有三个数据表:应用程序(applications)、权限(permissions)和应用程序权限(applications_permissions)。
我已经编写了以下查询语句,但它不包括没有应用程序的权限ID :/
|------------| |------------------------| |-----------|
|applications| |applications_permissions| |permissions|
|------------| |------------------------| |-----------|
| id | <-| application_id | | id |
| price | | permission_id |-> | name |
|------------| |------------------------| |-----------|
对于应用程序,有两类:免费和商业(价格=“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')
我该怎么做? 我已经尝试了几个小时(查询和混合连接),但我还是不明白 :/
WHERE
子句。如果这不起作用,请发一个新问题。 - Erwin Brandstetter