Cómo devolver un valor booleano en Redshift
Tengo una tabla siguiente:
id person type counted expected
1 a A 0 1
2 a A 1 0
3 a B 1 0
4 a B 2 0
5 a B 3 4
6 b C 0 0
Primero, me gustaría agrupar por type
y agregar mediante la suma de counted
y expected
.
person type sum(counted) sum(expected)
a A 1 1
a B 6 4
b C 0 0
Luego me gustaría agregar un booleano que indique si sum(counted)
es igual a sum(expected)
o no.
person type sum(counted) sum(expected) counted=expected
a A 1 1 true
a B 6 4 false
b C 0 0 true
Y luego me gustaría agrupar por person
y devolver un booleano con and
en person
.
person has_false
a false
b true
¿Hay alguna manera de lograr esto?
Ya llegué hasta la mitad pero no he procedido aún.
select person,type,sum(counted),sum(expected)
from table
group by person,type
Si alguien tiene alguna opinión, por favor hágamelo saber.
Gracias
davy.ai
Sí, se puede lograr el resultado deseado utilizando una subconsulta y una declaración
CASE
de esta manera:Aquí, primero agrupamos los datos por
persona
ytipo
, agregandocontado
yesperado
utilizando la funciónSUM
. Luego, utilizamos esto como una subconsulta y agrupamos los resultados porpersona
. Finalmente, utilizamos la funciónbool_and
para verificar si los valorescontado
yesperado
son iguales para cada persona, y devolver un valor booleano en consecuencia utilizando una declaraciónCASE
.