Fundamentos

¿COUNT(*) o COUNT(columna)?

La diferencia parece pequeña, pero puede cambiar un KPI de integridad o volumen.

Equipo de SQL.tn7 min
Dos contadores comparan todas las líneas con las celdas realmente completadas

¿Qué es lo que realmente quieres contar?

COUNT(*) cuenta todas las líneas perimetrales. COUNT(telephone) solo cuenta líneas donde el teléfono no es NULL.

El uso de ambos en la misma consulta produce una verificación de integridad: población total, valores ingresados y diferencia.

Los nombres, cantidades y datos utilizados en este artículo son ficticios y creados con fines de aprendizaje.

La consulta explicada

Empieza por definir qué debe representar una fila del resultado. Esta decisión determina las columnas, agrupaciones y controles necesarios.

El siguiente ejemplo aísla el mecanismo principal. Ejecútelo, observe el resultado y luego cambie una cláusula a la vez para comprender su efecto.

Medir los teléfonos ingresados
SELECT
  COUNT(*) AS clients_total,
  COUNT(telephone) AS telephones_renseignes,
  COUNT(*) - COUNT(telephone) AS telephones_absents
FROM clients;

Lea el resultado como un analista.

Se deben conciliar las tres columnas: los ingresados más los ausentes es igual al total. Este control hace que la tarifa final sea explicable.

Después de join, COUNT(*) también puede contar líneas multiplicadas. Comprueba siempre el nivel de detalle antes de interpretar el volumen.

  • Define la población antes de contar.
  • Mida el NULL de la columna contada.
  • Comprueba el efecto de joins.
  • Compara el volumen detallado y agregado.

Errores que distorsionan el análisis

Una consulta puede ser válida sin responder correctamente a la pregunta. Los errores más costosos suelen ser silenciosos: perímetro incorrecto, línea multiplicada o valor faltante interpretado como cero.

Antes de compartir el resultado, compárelo con una pequeña muestra calculada manualmente y mantén la definición del alcance con la consulta.

  • Presente COUNT(columna) como el número de registros devueltos.
  • Olvídese del NULL.
  • Cuenta después de un join de muchos a muchos.
  • Utiliza DISTINCT para ocultar una multiplicación que falta.

Ponte en practica

Utiliza el ejercicio de integridad para calcular una tasa y proteger la división con NULLIF.

El simulador SQL de SQL.tn solo ejecuta consultas de lectura sobre datos ficticios en su navegador. Puede probar varias escrituras y comparar sus resultados sin instalar ningún software.

Pon esta guía en práctica.

Abre el ejercicio relacionado, ejecuta tu consulta y compara el resultado esperado.

Empezar el ejercicio