首页 > 解决方案 > 联合查询的总百分比

问题描述

我想计算每个月不同类的百分比,每个类都取自一个单独的基础(person1、person2 和 person3),知道这三个基础包含相同的类名。并且我想要三个碱基的总百分比。我试图这样做,但得到的百分比与我拥有的真实值不同。

select 100*count(distinct person)/max(all_1) as percent_1,class,bb.month from (select * from  person_1) aa inner join (select count (person) as all_1, month from person_1 group by month) bb on aa.month = bb.month group by class,bb.month 
 
union select 100*count(distinct person)/max(all_2) as percent_2,class,bb.month from (select * from  person_2) aa inner join (select count (person) as all_2, month from person_2 group by month)bb on aa.month = bb.month group by class,bb.month 

union select 100*count(distinct person)/max(all_3) as percent_3,class,bb.month from (select * from  person_3) aa inner join (select count (person) as all_3, month from person_3 group by month)bb on aa.month = bb.month group by class,bb.month 

示例:(第 1 个月) 基础 person_1

班级
1 阿尼斯
1 阿米尔
2 塔塔
3 托托
3 蒂蒂
3 咪咪

基地人_2

班级
1 巴巴
1 碧波
1 阿霞
2 猕猴桃
3
3 阿迈勒

我想要的结果是百分比:

班级 丁腈橡胶 百分
1 1 5 42%
1 2 2 16%
1 3 5 42%

标签: mysqlsql

解决方案


SELECT class, COUNT(*) nbr, 100 * COUNT(*) / SUM(COUNT(*)) OVER () percent
FROM ( SELECT class
       FROM person_1
     UNION ALL
       SELECT class
       FROM person_2 ) total
GROUP BY class

小提琴


推荐阅读