1
respuesta

Error mio

Hice el siguiente SQL:

SELECT YEAR(F.FECHA) AS FECHA, CEIL(F.IMPUESTO*SUM(I.CANTIDAD*I.PRECIO)) AS VALOR_IMPUESTO_PAGO
FROM FACTURAS F
INNER JOIN ITEMS I
ON I.NUMERO = F.NUMERO
WHERE YEAR(F.FECHA) = 2021
GROUP BY  F.FECHA;

Y me salio el resultado correcto. Pero el del profesor es este:

SELECT YEAR(FECHA), CEIL(SUM(IMPUESTO * (CANTIDAD * PRECIO))) 
AS RESULTADO
FROM facturas F
INNER JOIN items I ON F.NUMERO = I.NUMERO
WHERE YEAR(FECHA) = 2021
GROUP BY YEAR(FECHA);

La diferencia esta en el group by, pero no se realmente por que saldría lo mismo, pienso que es por el orden, Por ejemplo:

  • Primero de ejecuta el WHERE
  • Luego el Group BY
  • Si es asi, entonces creo que no hay conflicto, pues la tabla resultante despues del where, son todas del 2021 y además es de la misma fecha, es por eso que salio igual: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad Pero realmente mi código estaba mal. Saludos
1 respuesta

Hola Edsel, tu observación es muy perspicaz y estás en el camino correcto :). La diferencia entre tu consulta SQL y la del profesor radica principalmente en la cláusula GROUP BY.

En tu consulta, estás agrupando por la fecha completa (F.FECHA), lo que significa que estás agrupando por día, mes y año. Por lo tanto, obtendrás un resultado para cada día del año 2021.

En la consulta del profesor, se agrupa por el año de la fecha (YEAR(FECHA)), lo que significa que se agrupa por año. Por lo tanto, obtendrás un resultado para todo el año 2021.

Si solo tienes datos de un día en 2021 en tus tablas, entonces sí, los resultados serán los mismos. Pero si tienes datos de más de un día en 2021, los resultados serán diferentes.

Buenos estudios, Edsel! :D

Si este post te ayudó, por favor, marca como solucionado ✓.