Sqlite SQL-对从查询中的聚合函数获得的结果执行附加数学计算
我对编写SQL查询相当陌生。我使用了一个子查询,以便获得应用于两个不同表的聚合函数的结果。此外,我想获得这两个聚合函数的结果之间的比率。换句话说,聚合函数1的结果/聚合函数2的结果Sqlite SQL-对从查询中的聚合函数获得的结果执行附加数学计算,sqlite,subquery,aggregate-functions,Sqlite,Subquery,Aggregate Functions,我对编写SQL查询相当陌生。我使用了一个子查询,以便获得应用于两个不同表的聚合函数的结果。此外,我想获得这两个聚合函数的结果之间的比率。换句话说,聚合函数1的结果/聚合函数2的结果 Id 1 2 3 4 5 6 7 输入: 表用户 Id
Id
1
2
3
4
5
6
7
输入:
表用户
Id
1
2
3
4
5
6
7
表事件
Id
1
2
3
4
5
6
7
User_Id Event_Name
1 View_User_Profile
1 View_User_Activity
1 View_User_Profile
2 View_User_Activity
3 View_User_Activity
4 View_User_Profile
5 View_User_Activity
7 View_User_Activity
这是我目前的代码:
Id
1
2
3
4
5
6
7
SELECT COUNT(*) AS Number_of_Users,
(SELECT COUNT(DISTINCT U.Id) AS Number_of_Users_Viewed_Profile
FROM dsv1069.Users U Left Join dsv1069.Events E
ON U.Id = E.user_id
WHERE E.Event_Name = 'view_user_profile') AS Number_of_Users_Viewed_Profile
FROM dsv1069.Users
结果:
Id
1
2
3
4
5
6
7
Number_of_Users: 7
Number_of_Users_Viewed_Profile: 2
预期产出:
Id
1
2
3
4
5
6
7
Number_of_Users: 7
Number_of_Users_Viewed_Profile: 2
PERCENT OF USERS VIEWED PROFILE: 28.6%
问题:到目前为止,我的代码没有做的是计算比率2/7=28.6%
我在聚合函数上做了很多搜索,但找不到关于如何将这些函数的结果作为查询的一部分的任何信息。谢谢你的帮助 我相信您可以获得列
用户数\u查看\u配置文件,而无需加入:
Id
1
2
3
4
5
6
7
SELECT COUNT(DISTINCT user_id)
FROM dsv1069.Events
WHERE Event_Name = 'view_user_profile'
这相当于您的查询:
Id
1
2
3
4
5
6
7
SELECT
COUNT(*) AS Number_of_Users,
(
SELECT COUNT(DISTINCT user_id)
FROM dsv1069.Events
WHERE Event_Name = 'View_User_Profile'
) AS Number_of_Users_Viewed_Profile
FROM dsv1069.Users
您可以使用CTE获取比率
列:
Id
1
2
3
4
5
6
7
WITH cte AS (
SELECT
COUNT(*) AS Number_of_Users,
(
SELECT COUNT(DISTINCT user_id)
FROM Events
WHERE Event_Name = 'View_User_Profile'
) AS Number_of_Users_Viewed_Profile
FROM Users
)
SELECT *, ROUND(100.0 * Number_of_Users_Viewed_Profile / Number_of_Users, 1) AS ratio
FROM cte
请参阅。
或没有CTE:
Id
1
2
3
4
5
6
7
SELECT
t1.Number_of_Users,
t2.Number_of_Users_Viewed_Profile,
ROUND(100.0 * t2.Number_of_Users_Viewed_Profile / t1.Number_of_Users, 1) AS ratio
FROM (SELECT COUNT(*) AS Number_of_Users FROM Users) AS t1
CROSS JOIN (
SELECT COUNT(DISTINCT user_id) AS Number_of_Users_Viewed_Profile
FROM Events
WHERE Event_Name = 'View_User_Profile'
) AS t2
请参阅。
结果:
Id
1
2
3
4
5
6
7
请添加输入和预期输出。