sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Hur begränsar man ett resultat per ID?

CREATE OR REPLACE VIEW employee_sales_totals AS
    SELECT
        e.*,
        SUM(p.total_sale_value)   AS total_sale_value
    FROM
        Employee e
    INNER JOIN
        Payment  p
            ON p.employee_number = e.employee_number 
    GROUP BY
        e.id  -- This should be the Primary Key / Surrogate Key of the employee table
;

CREATE OR REPLACE VIEW shop_top_employee_by_sales_value AS
    SELECT
        s.storename          AS "Store", 
        e.employee_name      AS "Employee", 
        m.employee_name      AS "Manager", 
        p.total_sale_value   AS "Sales Value" 
    FROM
    (
        SELECT storeid, MAX(total_sale_value) AS total_sale_value
          FROM employee_sales_totals
      GROUP BY storeid
    )
       p
    INNER JOIN
        employee_sales_totals   e
            ON  e.storeid          = p.storeid
            AND e.total_sale_value = p.total_sale_value
    INNER JOIN
        fss_Shop   s 
            ON s.storeid = e.storeid 
    INNER JOIN
        Employee   m
            ON m.employee_number = e.manager_number 
;

Enligt svaret på din tidigare fråga, om flera anställda är bundna för samma totala försäljningsbelopp i samma butik, skulle alla sådana anställda returneras.



  1. Hur man skriver valda uttalanden

  2. Använder EXCEPT operatorn på MySql 5.1 version

  3. Öka ett värde i Postgres

  4. ExecuteReader kräver en öppen och tillgänglig anslutning. Anslutningens nuvarande tillstånd är Ansluter