sql >> データベース >  >> RDS >> Oracle

SQL各部門の最大販売日を選択する

    以下の方法で試すことができます-

    with cte as 
    (
     SELECT 
     Departments.Name, SALES.Date_sale, SUM(GOODS.Price * SALES.Quantity) 
     AS profit FROM DEPARTMENTS inner join GOODS on DEPARTMENTS.Dept_id = GOODS.Dept_id
     inner join SALES on GOODS.Good_id = SALES.Good_id
     GROUP BY DEPARTMENTs.Name, SALES.Date_sale
    )A
    
    select * from cte a
    where profit =
         (select max(profit) from cte b on a.department=b.department)
    

    または、row_number()を使用できます

    select * from
    (
    select *, row_number() over(partition by department oder by profit desc) as rn
    from cte
    )A where rn=1
    


    1. MySQLサーバーのメモリが不足しているか、起動しません

    2. 行を削除するMySQLのデッドロック

    3. SQLServerのテーブル値関数を介してデータを削除する

    4. 継承元の親を照会するときに、行のソーステーブルの名前を取得します