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

Oracleでdistinctとsumの両方を一緒に使用する方法は?

    このようなデータ構造には細心の注意を払っています。まず、すべてのid sの価格は1つだけです:

    select id
    from table t
    group by id
    having count(distinct price) > 1;
    

    最も安全な方法は、idごとに特定の価格を抽出することだと思います。 (最大値を言います)そして、集計を行います:

    select sum(price)
    from (select id, max(price) as price
          from table t
          group by id
         ) t;
    

    次に、データを修正して、追加のディメンションが繰り返されないようにします。 IDと価格ごとに1行のテーブルが必要です(または重複しているが、発効日と終了日によって制御されている可能性があります)。

    データがめちゃくちゃです。特定のIDのすべての行で価格が同じであると想定しないでください。データを修正するまで、フィールドを使用するたびに確認する必要があります。



    1. MYSQLを使用してランダムな数を作成する

    2. PDOプリペアドステートメントから生のSQLクエリ文字列を取得する

    3. OracleIndexのクラスタリング係数の計算方法

    4. OracleでUnixタイムスタンプを日付値に変換する