Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Sugerencia] Ordenar por DNI usando la función CAST()

Dado que el campo DNI es un VARCHAR y no un algún tipo de INT, los DNI no se pueden ordenar como números.

SELECT DNI, COUNT(*) AS NUMERO_DE_COMPRAS
FROM FACTURAS
WHERE YEAR(FECHA_VENTA) = 2016
GROUP BY DNI
HAVING NUMERO_DE_COMPRAS > 2000
ORDER BY DNI;

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Pero si usamos la función CAST(DNI AS NUMERO), la cual convierte texto a número, entonces sí se puede hacer.

SELECT DNI, COUNT(*) AS NUMERO_DE_COMPRAS
FROM FACTURAS
WHERE YEAR(FECHA_VENTA) = 2016
GROUP BY DNI
HAVING NUMERO_DE_COMPRAS > 2000
ORDER BY CAST(DNI AS UNSIGNED);

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta
solución!

¡Hola Estudiante, espero que estés bien!

Entiendo tu sugerencia sobre ordenar el campo DNI que es de tipo VARCHAR. Al convertirlo a un número con CAST(DNI AS UNSIGNED), puedes ordenarlo de manera numérica en lugar de alfabética. Esto es útil cuando los valores son numéricos pero están almacenados como texto.

Tu consulta está bien planteada para lograr este objetivo:

SELECT DNI, COUNT(*) AS NUMERO_DE_COMPRAS
FROM FACTURAS
WHERE YEAR(FECHA_VENTA) = 2016
GROUP BY DNI
HAVING NUMERO_DE_COMPRAS > 2000
ORDER BY CAST(DNI AS UNSIGNED);

Al usar CAST, MySQL interpreta los valores de DNI como números, permitiendo una ordenación correcta. Esto es especialmente importante cuando los valores numéricos tienen diferentes longitudes y podrían no ordenarse correctamente como cadenas.

Espero que esto te haya aclarado el concepto. ¡Bons estudos!