gpt4 book ai didi

mysql - 仅在一个表中、仅在第二个表中以及在两个表中的条目的百分比

转载 作者:行者123 更新时间:2023-11-29 15:27:57 25 4
gpt4 key购买 nike

我有两个带有公共(public)键(user_Id)的表,并且我正在尝试查询显示以下内容的结果:仅出现在第一个表 (PC) 中的用户(用户为 user_Id)的百分比百分比 仅出现在第二表(电话)中的用户,以及百分比出现在 <两个表。总百分比加起来应为 100%。

Table name: PC
user_Id Page
1322 page_1_PC
7223 page_20_PC
1032 page_7_PC
366 page_3_PC
....
Table name: phone
user_Id Page
123 page_1_phone
300 page_72_phone
1322 page_7_phone
3662 page_3_phone
....

期望的输出是这样的:

platform     percentage
PC_only 23%
phone_only 36%
both 41%
....

我得到的最远的是下面这个,它只显示一个表中存在的用户总数,而不是另一个表中存在的用户总数,但我被困住了。最好不要使用 UNION,因为我不想多次查询表:

SELECT COUNT(user_Id) AS PC_only FROM PC WHERE NOT EXISTS 
(SELECT * FROM phone WHERE PC.user_Id = phone.user_Id)

最佳答案

从 MySQL 8 开始,您可以使用 SUM OVER 来获取总计数,从而计算百分比:

select
user_id in (select user_id from pc) as in_pcs,
user_id in (select user_id from phones) as in_phones,
count(*) / sum(count*) over () * 100 as percentage
from users
group by in_pcs, in_phones
order by in_pcs, in_phones;

如果要排除两个表中都不存在的用户,请在 GROUP BY 子句后添加 having in_pcs or in_phones

关于mysql - 仅在一个表中、仅在第二个表中以及在两个表中的条目的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58937536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com