EJERCICIOS SQL GROUP BY
Javier García Cambronel PRIMERO DE ASIR
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
COMO IMPORTAR UNA BASE DE DATOS
SOLUCION EJERCICIOS SQL GROUP BY
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
COMO IMPORTAR UNA BASE DE DATOS Lo primero que debemos hacer es pulsar el botón derecho sobre bases de datos y selecionar la opcion “Adjuntar” como vemos en la siguiente imagen:
Una vez hecho esto, veremos la siguiente ventana, donde tendremos que pulsar al boton agregar.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ] Una vez que hemos pulsado sobre el botón agregar, nos aparecera un explorador, en el cual nos tendremos que desplazar y seleccionar, donde se encuentra el archivo de la base de datos que vamos a importar, una vez que hemos seleccionado dicho archivo, pulsamos el boton “aceptar”.
Cuando hemos pulsado en aceptar, ya veremos la siguiente pantalla donde se encuentra la direccion y el archivo que hemos escogido, con la base de datos que vamos a importar y solo tendremos que pulsar el boton aceptar para que los cambios, es decir, para que la imporatacion se lleve a cabo.
Y como podemos observar, todo se ha llevado a cabo correctamente y podremos empezar a utilizar dicha base de datos.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
SOLUCION EJERCICIOS SQL GROUP BY 1. De cada vendedor (todos) queremos saber su nombre y el importe total vendido. En caso de que el importe sea NULL, cambiarlo por 0,00 con la función ISNULL(). Como podemos ver hacemos una selección del nombre de los empleados, utilizamos la funcion isnull para que en el caso de que la suma del importe tenga el valor null cambiarlo por 0 todo esto lo nombramos según nos pide el ejercicio, como : “importe total vendido”, hacemos un “LEFT JOIN” entre empleados y pedidos y hacemos la comparación entre “numemp” y “rep”todo ello agrupando para que se lleve a cabo correctamente numemp y nombre. SELECT numemp, nombre, ISNULL(SUM(importe),0) AS [Importe total vendido] FROM empleados LEFT JOIN pedidos ON numemp = rep GROUP BY numemp, nombre;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
2. De cada empleado, obtener el importe vendido a cada cliente. Hacemos una selección de empleados y de los clientes renombrando clie por el nombre de cliente, hacemos la suma del importe y lo renombramos como importe total vendido, todo esto desde la tabla pedidos y agrupando los productos y clientes con group by. select rep, clie as Cliente, SUM(importe) as [Importe total vendido] from pedidos group by rep, clie;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
3. Repetir la consulta anterior pero ahora deben aparecer también los empleados que no han vendido nada. Seleccionamos el numero de empleado y cliente hacemos la suma del importe y lo renombramos como importe vendido haciendo um “left join”desde la tabla empleados y pedidos y comparando que el número de empleado sea igual a rep, despues agrupamos numemp y clie para que se pueda llevar a cabo con “group by”. select numemp, clie, SUM(importe) as [Importe vendido] from empleados LEFT JOIN pedidos on numemp = rep group by numemp, clie;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
4. Repetir la consulta pero ahora debe aparecer también el total de cuánto ha vendido cada empleado. añadimos um “ROLLUP” “ROLLUP” que genera un Como vemos el código es igual al anterior pero añadimos conjunto de resultados que muestra agregados para una jerarquía de valores de las columnas seleccionadas en este caso nos va a servor para obtener el total de lo que ah vendido cada empleado y despues ordenaremos los resultados con order by, aunke esto último es opcional.
select numemp, clie, sum(importe) as [Importe vendido] from empleados left join pedidos on numemp = rep group by numemp, clie with rollup order by numemp,clie;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
5. En los resultados anteriores no se distinguen bien las líneas que corresponden a totales. Modificar la consulta para indicar con un 1 si es una fila de totales y con un 0 si no lo es. La consulta es igual que la anterior pero utilizamos GROUPING para distinguir entre los valores NULL devueltos por ROLLUP e indicamos así si es una fila de totales o no. select numemp, clie, sum(importe) as [Importe vendido], GROUPING(clie) as [fila de totales cliente], GROUPING(numemp) AS [fila de totales empleados] FROM empleados LEFT JOIN pedidos ON numemp = rep GROUP BY numemp, clie WITH ROLLUP ORDER BY numemp,clie;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
6. Ahora modifica la consulta para que las filas de totales aparezcan más claras, substituyendo el 1 de Agrupa clie por "Total empleado", el 1 de Agrupa numemp por Total final y el valor 0 por espacio en blanco. Lo mismo que la consulta anterior pero imponiendo dos casos en grouping, donde indicamos que cuando sea 0 se deje el espacio em blanco y cuando sea 1 el valor, escribir lo que queremos “total empleado” en el primer caso y “total final” en el segundo. SELECT numemp, clie, SUM(importe) AS [Importe vendido], CASE GROUPING(clie) WHEN 0 THEN ' ' WHEN 1 THEN 'Total empleado' END AS [Filas de totaels clientes], CASE GROUPING(numemp) WHEN 0 THEN ' ' ELSE 'Total Final' END AS [Filas de totales empleados] FROM empleados LEFT JOIN pedidos ON numemp = rep GROUP BY numemp, clie WITH ROLLUP ORDER BY numemp,clie;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
7. Ahora coloca las columnas Agrupa delante de las demás columnas. Hacemos lo mismo que en el caso anterior, solo que esta vez cada case de grouping lo situamos antes, para que así se muestre como se nos pide. SELECT CASE GROUPING(numemp) WHEN 0 THEN ' ' WHEN 1 THEN 'Total Final' END AS [Filas de totales empleados], CASE GROUPING(clie) WHEN 0 THEN ' ' WHEN 1 THEN 'Total empleado' END AS [Filas de totales clientes], numemp, clie, SUM(importe) AS [Importe vendido] FROM empleados LEFT JOIN pedidos ON numemp = rep GROUP BY numemp, clie WITH ROLLUP ORDER BY numemp,clie;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
8. Ahora queremos que "Total empleado" aparezca en la columna clie. Para hacer lo que se nos pide en este ejercicio lo indicamos asi en el segundo case, así cuando el valor retorna 1 se escribe en la columna Clie “total empleado” como se nos pide. SELECT CASE GROUPING(numemp) WHEN 0 THEN ' ' ELSE 'Total Final' END AS [Filas de totales empleados], numemp, CASE GROUPING(clie) WHEN 0 THEN CONVERT(CHAR(4),clie) WHEN 1 THEN 'Total empleado' END AS [Clie], SUM(importe) AS [Importe vendido] FROM empleados LEFT JOIN pedidos ON numemp = rep GROUP BY numemp, clie WITH ROLLUP ORDER BY numemp,clie;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
9. El empleado 104 (y otros) no ha vendido a nadie y por eso sale en la columna clie la palabra NULL, queremos que en estos casos no aparezca nada (se deje en blanco), y el importe si es NULL que salga un cero. Hacemos lo que nos indica el ejercicio y para ello solo tendremos que cambiar del código con el “case” correspindiente con el groping de cliente donde indicamos que cuando el valor es “null” se muestre la celda vacía , al igual que para cuando el importe sea null salga 0 hacemos como hicimos en el primer ejercicio que esta en el principio del trabajo, utilizando “ISNULL” y asignandole dicho valor cuando la suma del importe sea nula. SELECT CASE GROUPING(numemp) WHEN 0 THEN ' ' ELSE 'Total Final' END AS [Filas de totales empleados], numemp, CASE WHEN GROUPING(clie) = 1 THEN 'Total empleado' WHEN clie IS NULL THEN ' ' ELSE CONVERT(CHAR(4),clie) END AS [Clie], ISNULL(SUM(importe),0) AS [Importe vendido] FROM empleados LEFT JOIN pedidos ON numemp = rep GROUP BY numemp, clie WITH ROLLUP ORDER BY numemp,clie;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
[EJERCICIOS SQL GROUP BY] BY ]
10. Lo rematamos para que la fila del Total final no muestre los valores "NULL" ni "Total empleado". En cambio, los cambiaremos por tres puntos. Tampoco mostraremos el encabezado "Agrupa numemp". Hacemos lo que se nos pide como en el caso anterior con la clausula isnull para los valores nulos de la fila “total final” con la conversión correspondiente y en el grouping de numemp cuando obtenga el valor “1” mostraremos también también “…” para no mostrar en encabezado en la primera línea del código el “END AS” esta en blanco. SELECT CASE GROUPING(numemp) WHEN 0 THEN ' ' ELSE 'Total Final' END AS [ ], ISNULL(CONVERT(CHAR(3),numemp),'... ') AS [numemp], CASE WHEN GROUPING(clie) = 1 AND GROUPING(numemp) = 0 THEN 'Total empleado' WHEN GROUPING(clie) = 1 AND GROUPING(numemp) = 1 THEN '...' WHEN clie IS NULL THEN ' ' ELSE CONVERT(CHAR(4),clie) END AS [Clie], ISNULL(SUM(importe),0) AS [Importe vendido] FROM empleados LEFT JOIN pedidos ON numemp = rep GROUP BY numemp, clie WITH ROLLUP ORDER BY numemp,clie;