MySQL Workbench - 脚本将 return 存储在数组中并执行计算?
MySQL Workbench - script storing return in array and performing calculations?
首先,这是我大学作业的一部分。
现在已经解决了:我需要编写一个查询,以获取数据库中免费应用程序的数量占应用程序总数的百分比,按应用程序所属的类别排序。
我可以获得免费应用程序的数量以及按类别划分的应用程序总数。现在我需要找到百分比,这是有点梨形的地方。
这是我目前的情况:
-- find total number of apps per category
select @totalAppsPerCategory := count(*), category_primary
from apps
group by category_primary;
-- find number of free apps per category
select @freeAppsPerCategory:= count(*), category_primary
from apps
where (price = 0.0)
group by category_primary;
-- find percentage of free apps per category
set @totals = @freeAppsPerCategory / @totalAppsPercategory * 100;
select @totals, category_primary
from apps
group by category_primary;
然后列出类别,但每个类别中列出的百分比值完全相同。
我最初想使用数组,但据我所读mySql似乎不支持数组。
我有点不知道如何从这里开始。
终于想通了。由于我一直将之前的结果保存在变量中,因此它似乎无法逐行计算,这就是为什么所有百分比都相同的原因,它是一个平均值。所以计算需要成为查询的一部分。
这是我想出的:
SELECT DISTINCT
category_primary,
CONCAT(FORMAT(COUNT(CASE
WHEN price = 0 THEN 1
END) / COUNT(*) * 100,
1),
'%') AS FreeAppSharePercent
FROM
apps
GROUP BY category_primary
ORDER BY FreeAppSharePercent DESC;
则查询结果为:
首先,这是我大学作业的一部分。
现在已经解决了:我需要编写一个查询,以获取数据库中免费应用程序的数量占应用程序总数的百分比,按应用程序所属的类别排序。
我可以获得免费应用程序的数量以及按类别划分的应用程序总数。现在我需要找到百分比,这是有点梨形的地方。
这是我目前的情况:
-- find total number of apps per category
select @totalAppsPerCategory := count(*), category_primary
from apps
group by category_primary;
-- find number of free apps per category
select @freeAppsPerCategory:= count(*), category_primary
from apps
where (price = 0.0)
group by category_primary;
-- find percentage of free apps per category
set @totals = @freeAppsPerCategory / @totalAppsPercategory * 100;
select @totals, category_primary
from apps
group by category_primary;
然后列出类别,但每个类别中列出的百分比值完全相同。
我最初想使用数组,但据我所读mySql似乎不支持数组。
我有点不知道如何从这里开始。
终于想通了。由于我一直将之前的结果保存在变量中,因此它似乎无法逐行计算,这就是为什么所有百分比都相同的原因,它是一个平均值。所以计算需要成为查询的一部分。
这是我想出的:
SELECT DISTINCT
category_primary,
CONCAT(FORMAT(COUNT(CASE
WHEN price = 0 THEN 1
END) / COUNT(*) * 100,
1),
'%') AS FreeAppSharePercent
FROM
apps
GROUP BY category_primary
ORDER BY FreeAppSharePercent DESC;
则查询结果为: