es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Teniendo dificultad con la consulta SQL.

Estoy trabajando en un problema en el que tengo que crear una consulta SQL que recupere a todos los empleados y la suma respectiva de los totales de factura de los clientes a los que apoyan. Por favor, ordene el conjunto de resultados en orden descendente por la suma total de las facturas.

Aquí está el esquema Esquema

Aquí se encuentra el resultado del problema

Aquí está mi consulta SQL:

select e.EmployeeId, avg(i.Total) as total
from employees as e, invoices as i ;

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para recuperar a todos los empleados y la suma respectiva de los totales de facturas para los clientes que ellos apoyan, puedes utilizar la siguiente consulta SQL:

    SELECT e.FirstName, e.LastName, SUM(i.Total) AS InvoiceTotal
    FROM employees e 
    JOIN customers c ON e.EmployeeId = c.SupportRepId
    JOIN invoices i ON c.CustomerId = i.CustomerId
    GROUP BY e.EmployeeId
    ORDER BY InvoiceTotal DESC;
    

    Explicación:
    – Comenzamos seleccionando el nombre y apellido de los empleados, así como la suma de los totales de las facturas para cada empleado.
    – Obtenemos esta información al unir las tablas employees, customers e invoices. Hacemos coincidir los empleados con los clientes en base al campo SupportRepId, y hacemos coincidir los clientes con las facturas en base al campo CustomerId.
    – Agrupamos los resultados por empleado, de modo que obtengamos la suma de los totales de las facturas para cada empleado.
    – Ordenamos los resultados por la suma total de facturas en orden descendente, para que los empleados con la suma total de facturas más alta aparezcan primero.

    Ten en cuenta que también puedes utilizar alias para hacer la consulta más legible, de la siguiente manera:

    SELECT emp.FirstName, emp.LastName, SUM(inv.Total) AS InvoiceTotal
    FROM employees emp
    JOIN customers cust ON emp.EmployeeId = cust.SupportRepId
    JOIN invoices inv ON cust.CustomerId = inv.CustomerId
    GROUP BY emp.EmployeeId
    ORDER BY InvoiceTotal DESC;
    

Comments are closed.