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

ペアが一致しない場合にチェックする SQL

    1 つの方法は、exists を使用することです。 特定のシンボルに複数の価格があることを確認する相関サブクエリを含む述語。:

    select * from table1 t
    where exists (
      select 1
      from table1
      where symbol = t.symbol
      and price <> t.price);
     

    サンプル SQL フィドル

    これは以下を返します:

    <プレ>| Date | Type | Symbol | Price | |------------------------|------|-----------|--------| | June, 30 1995 02:00:00 | gaus | 313586U72 | 109.25 | | June, 30 1995 02:00:00 | gbus | 313586U72 | 108.94 | | June, 30 1995 02:00:00 | agus | SRR | 10.25 | | June, 30 1995 02:00:00 | lcus | SRR | 0.45 | | July, 01 1995 02:00:00 | gaus | 313586U72 | 109.25 | | July, 01 1995 02:00:00 | gbus | 313586U72 | 108.94 |

    編集:Gordon Linoffsの巧妙な答えに触発された別のオプションは、 avg() を使用することです ウィンドウ関数として:

    select Date, Type, Symbol, Price  
    from (
      select Date, Type, Symbol, Price, avg = avg(price) over (partition by symbol) 
      from table1) a
    where avg <> price;
     

    編集:同じ日付の重複のみが返されるようにするためのチェック:http:/ /www.sqlfiddle.com/#!6/29d67/1



    1. どちらが速いですか— INSTRまたはLIKE?

    2. INNERJOINを使用したJSON_ARRAYAGGのMySQLJOINクエリの重複を削除します

    3. Oracleは、sqlplusの下のすべての列を返さないことを選択します

    4. django F()オブジェクトを使用して複数の列を更新する