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

集計関数を使用して、MINタイムスタンプに基づいてレコードをフィルタリングする

    最も早いレコードを取得し、同じ基準を2回入力する必要をなくすには、いくつかの方法があります。

    FETCH FIRST ROWSの使用(Oracle 12c以降で利用可能)

    select * 
    from abc_customer_details cd
    join abc_customers c on c.id = cd.customer_id
    where cd.country_code = 'KE'
    order by creation_timestamp
    fetch first row only;
    

    CTEの使用(WITH句)

    with cte as
    (
      select * 
      from abc_customer_details cd
      join abc_customers c on c.id = cd.customer_id
      where cd.country_code = 'KE'
    )
    select *
    from cte
    where (creation_timestamp) = (select min(creation_timestamp) from cte);
    

    ウィンドウ関数の使用

    select *
    from
    (
      select cd.*, c.*, min(creation_timestamp) over () as min_creation_timestamp
      from abc_customer_details cd
      join abc_customers c on c.id = cd.customer_id
      where cd.country_code = 'KE'
    )
    where creation_timestamp = min_creation_timestamp;
    

    (ちなみに、これらすべてのクエリで参加基準を変更しました。abc_customer_details.id = abc_customers.customer_idで参加する可能性は非常に低いようです。 。)



    1. 現在の日付から最後の 12 か月と、取得した先月の 1 日までの余分な日数を取得するにはどうすればよいですか

    2. テーブル所有者の変更

    3. PostgreSQLとOracle:コスト、使いやすさ、機能の違い

    4. phpを使用してテーブルのmysqlリストをmysqlからcsvファイルにエクスポートします