如何按exp_2_ID统计记录并输出计数高于平均值的对应exp2记录?
解决方案
数据说明
exp1 查询结果
| ID | exp_2_ID | Name |
|---|---|---|
| 1 | 1 | a |
| 2 | 1 | b |
| 3 | 2 | c |
exp2 查询结果
| ID | name |
|---|---|
| 1 | |
| 2 | no_print |
需求实现SQL语句
使用CTE(公共表表达式)分步完成统计、平均值计算与关联筛选:
WITH exp1_group AS ( -- 统计每个exp_2_ID的出现次数 SELECT exp_2_ID, COUNT(*) AS count_num FROM exp1 GROUP BY exp_2_ID ), average_calc AS ( -- 计算计数的平均值 SELECT AVG(count_num) AS avg_num FROM exp1_group ) -- 关联exp2筛选出计数高于平均值的记录 SELECT e2.ID, e2.name FROM exp2 e2 INNER JOIN exp1_group eg ON e2.ID = eg.exp_2_ID INNER JOIN average_calc ac ON eg.count_num > ac.avg_num;
执行结果
| ID | name |
|---|---|
| 1 |
内容的提问来源于stack exchange,提问作者sizeof
相关产品推荐
相关产品推荐

