Consulta para encontrar el conteo total de ID, y los ID que tienen valores nulos en cualquier columna y el porcentaje de ambos (es decir, el conteo de ID con valores nulos /conteo total de ID).
Hay dos tablas.
La tabla A tiene la siguiente estructura
ID | Flag | Name |
---|---|---|
1X | 1 | Y |
2Y | 0 | Null |
3Z | 1 | Null |
4A | 1 | Y |
La tabla B tiene la siguiente estructura
B_ID | City | State |
---|---|---|
1X | Y | Null |
2Y | Null | Null |
3Z | Null | Y |
4A | Y | Y |
Quiero obtener la cantidad total de IDs y la cantidad de IDs que tienen NULL en cualquiera de las columnas (name, city, state), por ejemplo, de las tablas anteriores solo el ID 4A tiene un valor no nulo en las tres columnas en ambas tablas, por lo que la salida debería ser como la siguiente
Cantidad total | IDs con NULL | Porcentaje que falta |
---|---|---|
4 | 3 | 0.75% |
El recuento total es 4 ya que hay un total de cuatro IDs, el ID con NULL es 3 porque hay 3 IDs que tienen NULL en cualquiera de las tres columnas (es decir, name, city, state), y el porcentaje que falta es simplemente IDs con NULL / Conteo total.
Intenté usar una consulta siguiendo las siguientes líneas
select (count/total) * 100 pct, count,total
from (select sum(count) count
from(select count() count from tableA T1
where T1.name is null
union all
select count() count from tableA T1
join tableB T2 on T1.ID = T2.B_ID
where T2.city is null
union all
select count(*) count from tableA T1
join tableB T2 on T1.ID = T2.B_ID
where T2.state is null)),
select count(ID) total from tableA);
Pero la consulta no devuelve la salida deseada, ¿puede sugerirme una mejor manera?
Gracias.
davy.ai
Como modelo de lenguaje de IA, no puedo probar la consulta, pero puedo sugerir una posible solución utilizando SQL. La consulta se puede escribir de la siguiente manera:
Esta consulta primero realiza una unión izquierda entre la Tabla A y la Tabla B utilizando las columnas ID y B_ID, respectivamente. Luego, utiliza la función COALESCE para comprobar si las columnas Name, City o State tienen valores nulos y cuenta el número de registros que tienen al menos un valor nulo. Finalmente, calcula el porcentaje de registros que tienen valores nulos utilizando las funciones COUNT y ROUND.
¡Espero que esto ayude!