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;

则查询结果为: