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

イベントの最小日付に基づいてデータを異なるテーブルにグループ化する

    分析関数としてMINを使用すると、顧客が考慮すべき果物を計算できます。

    順序はアルファベットではないため、DECODEを使用する必要があります

    Restは、MINを使用した単純なグループです。 購入日については、MINフルーツを使用した購入のみを考慮します。

    with cust as (
    select CUST_ID, PURCH_DATE, FRUIT,
    decode(min(decode(FRUIT,'Apple',1,'Orange',2,'Banana',3)) over (partition by cust_id),
           1,'Apple',2,'Orange',3,'Banana') as min_fruit       
    from tab)
    select CUST_ID,min_fruit,
           min(case when FRUIT = MIN_FRUIT then PURCH_DATE end) min_purch_date
    from cust
    group by CUST_ID,min_fruit
    order by 1,2
    

    ベローは、分析関数を使用しない代替ソリューションです。 。

    最初のサブクエリは、最小限の果物を計算します シルプメgroup by 同じDECODEを使用する logik。

    サブクエリを元のテーブルに結合する必要があります。これは、分析関数を使用して保存できるものとまったく同じです。

    with min_fruit as (
    select CUST_ID, 
    decode(min(decode(FRUIT,'Apple',1,'Orange',2,'Banana',3)),
           1,'Apple',2,'Orange',3,'Banana') as min_fruit       
    from tab
    group by cust_id)
    select cust.CUST_ID,min_fruit fruit,
           min(case when FRUIT = MIN_FRUIT then PURCH_DATE end) min_purch_date
    from tab cust
    join min_fruit on cust.cust_id = min_fruit.cust_id
    group by cust.CUST_ID,min_fruit
    order by 1,2;
    

    サンプルデータを使用すると、これが返されます

       CUST_ID FRUIT  MIN_PURCH_DATE     
    ---------- ------ -------------------
         10001 Apple  12.01.2019 00:00:00
         10002 Apple  21.01.2019 00:00:00
         10003 Apple  06.02.2019 00:00:00
    


    1. PDOを使用したヘルパー関数の挿入/更新

    2. mysqlの複数行から単一行

    3. 動的テーブルでHTML要素の値をキャプチャする

    4. ファイルからテキストを取得し、スクリプトを使用してmysqlテーブルに挿入します