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

GROUP BY/SQLでの集計関数の混乱

    標準SQL(MySQLではない)では、GROUP BYを使用する場合、GROUPBY句に集計されていないすべての結果列を一覧表示する必要があります。したがって、order_details 6つの列がある場合は、6つの列すべてをリストする必要があります(名前で-*は使用できません) GROUPBY句またはORDERBY句)のGROUPBY句。

    次のこともできます:

    SELECT order_no, SUM(order_price)
      FROM order_details
     GROUP BY order_no;
    

    すべての非集計列がGROUPBY句にリストされているため、これは機能します。

    次のようなことができます:

    SELECT order_no, order_price, MAX(order_item)
      FROM order_details
     GROUP BY order_no, order_price;
    

    このクエリは実際には意味がありません(またはおそらく意味がありません)が、「機能します」。個別の注文番号と注文価格の組み合わせが一覧表示され、その価格に関連付けられている最大注文アイテム(番号)が表示されます。注文のすべてのアイテムの価格が異なる場合は、それぞれ1行のグループになります。 OTOH、同じ価格で注文に複数のアイテムがある場合(たとえば、それぞれ£0.99)、それらをグループ化し、その価格で最大注文アイテム番号を返します。 (テーブルには(order_no, order_item)に主キーがあると想定しています。 ここで、注文の最初のアイテムはorder_item = 1です。 、2番目の項目は2などです。)



    1. データを並べ替えないようにするにはどうすればよいですか?

    2. PostgreSQLメジャーバージョン8.4.x/9.3.xのアップグレード中のSlony-Iでのスイッチオーバー/スイッチバック

    3. ResultSetを返す

    4. LIKEフィルターでアンダースコア文字を使用するとすべての結果が得られるのはなぜですか?