我有以下查询:
SELECT COUNT(eaa.cd_aluno), c.nome_curso FROM evento_atividade_aluno eaa
JOIN aluno a ON eaa.cd_aluno = a.cd_aluno
JOIN curso c ON a.cd_curso_aluno = c.cd_curso
WHERE cd_evento_atividade = 1 AND bln_presenca IS TRUE
GROUP BY c.nome_curso
ORDER BY COUNT(eaa.cd_aluno)
结果:
1,TESTE 1
2,TESTE 2
3,TESTE 3
但我需要结果如下(百分比):
16.7,TESTE 1
33.3,TESTE 2
50,TESTE 3
我尝试做一些子查询但是没有工作:
SELECT COUNT(eaa.cd_aluno) / (SELECT COUNT(cd_aluno) FROM
evento_atividade_aluno WHERE cd_evento_atividade = 1 AND bln_presenca IS
TRUE), c.nome_curso FROM evento_atividade_aluno eaa
JOIN aluno a ON eaa.cd_aluno = a.cd_aluno
JOIN curso c ON a.cd_curso_aluno = c.cd_curso
WHERE cd_evento_atividade = 1 AND bln_presenca IS TRUE
GROUP BY c.nome_curso
ORDER BY COUNT(eaa.cd_aluno)
答案 0 :(得分:2)
将查询放在派生表中,并计算外部查询中的总和和百分比。使用sum()
作为窗口函数而不是常规聚合,因此您不必使用GROUP BY
:
SELECT round(count* 100.0/sum(count) OVER (), 2) AS percent, nome_curso
FROM (
-- place your query here
-- instead of VALUES below
VALUES
(1, 'TESTE 1'),
(2, 'TESTE 2'),
(3, 'TESTE 3')
) v (count, nome_curso)
percent | nome_curso
---------+------------
16.67 | TESTE 1
33.33 | TESTE 2
50.00 | TESTE 3
(3 rows)
答案 1 :(得分:0)
只需使用窗口功能:
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
}
}