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

sqlは複数の行の最も早い日付を選択します

    select customer_name,
           kwh,
           reading_date, 
           reading_time
    from (
       select customer_name,
              kwh,
              reading_time,
              reading_date,
              row_number() over (partition by customer_name order by reading_time) as rn
       from readings
       where reading_date = date '2012-11-17'
    ) t
    where rn = 1
    

    別の方法として:

    select r1.customer_name,
           r1.kwh, 
           r1.reading_date,
           r1.reading_time
    from readings r1
    where reading_date = date '2012-11-17'
    and reading_time = (select min(r2.reading_time)
                        from readings
                        where r2.customer_name = r1.customer_name
                        and r2.read_date = r1.reading_date);
    

    しかし、私は最初のものがより速いことを期待します。

    ところで:なぜ日付と時刻を2つの別々の列に保存するのですか?これはtimestampでより適切に処理できることをご存知ですか 列?



    1. Simple Railsアプリ:エラーは整数にアクセスできません

    2. postgresqlアプリケーションでrailsで移行を実行した後のシーケンスに関する通知

    3. 列の序数位置を使用してSQLサーバーデータを選択することは可能ですか?

    4. Oracle のすべてのアクセント付き文字の正規表現