Saltar al contenido

Cómo insertar una columna de recuento en una consulta SQL

Solución:

Con tu edición, veo que quieres una fila IDENTIFICACIÓN (normalmente llamado número de fila en lugar de “recuento”) que se recopila mejor a partir de una ID única en la base de datos (person_id o algún otro campo único). Si eso no es posible, puede crear uno para este informe con ROW_NUMBER() OVER (ORDER BY EMPLOYEE_ID DESC) AS ID, en su declaración selecta.

select Name, ROW_NUMBER() OVER (ORDER BY Name DESC) AS ID,
Age, Gender
from customer

Esta función agrega un campo a la salida llamado ID (vea mis consejos en la parte inferior para describir los alias). Dado que esto no está en la base de datos, necesita un método para determinar cómo se incrementará. Después de la palabra clave over, ordena por nombre en orden descendente.


Información sobre el conteo sigue (no será único por fila):

Si cada cliente tiene varias entradas, pero los campos seleccionados son los mismos para ese usuario y está contando los registros de ese usuario (sumados en un registro de resultados para el usuario), entonces escribiría:

select Name, count(*), Age, Gender
from customer
group by name, age, gender

Esto contará (consulte MSDN) todos los registros del usuario agrupados por nombre, edad y sexo (si coinciden, es un solo registro).

Sin embargo, si está contando todos los registros para que todo el informe tenga el total general en cada línea, entonces querrá:

select Name, (select count(*) from customer) as "count", Age, Gender
from customer

PROPINA: Si está utilizando algo como SSMS para escribir una consulta, al arrastrar las columnas se colocarán corchetes alrededor de las columnas. Esto solo es necesario si tiene espacios en los nombres de las columnas, pero un DBA tenderá a evitarlo como la plaga. Además, si necesita que el encabezado de una columna sea algo específico, puede usar la palabra clave as como en mi primer ejemplo.

W3Schools tiene un buen tutorial sobre count ()

los COUNT(column_name) La función devuelve el número de valores (los valores NULL no se contarán) de la columna especificada:

SELECT COUNT(column_name) FROM table_name;

los COUNT(*) La función devuelve el número de registros en una tabla:

SELECT COUNT(*) FROM table_name;

los COUNT(DISTINCT column_name) La función devuelve el número de valores distintos de la columna especificada:

SELECT COUNT(DISTINCT column_name) FROM table_name; 

COUNT(DISTINCT) funciona con ORACLE y Microsoft SQL Server, pero no con Microsoft Access.

Es extraño repetir el mismo número en cada fila, pero parece que esto es lo que está pidiendo. Y tenga en cuenta que esto podría no funcionar en su versión de SQL. MS Access?

SELECT [Name], (select count(*) from [customer]), [Age], [Gender]
FROM [customer]
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *