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

GROUPBY式エラーではありません

    エラーはすべてを示しています。MEMBERS.MEMBER_IDでグループ化していない およびMEMBERS.MEMBER_NAME

    SELECT MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME
         , COUNT(personal_training_sessions.session_id)
      FROM MEMBERS 
      JOIN personal_training_sessions
        ON personal_training_sessions.member_id = members.member_id
     GROUP BY MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME
    

    あたりの個人セッションの数が必要です メンバーなので、メンバー情報でグループ化する必要があります。

    基本的な(もちろん、はるかに複雑になる可能性があります)GROUP BY、SELECTクエリは次のとおりです。

    SELECT <column 1>, <column n>
         , <aggregate function 1>, <aggregate function n>
      FROM <table_name>
     GROUP BY <column 1>, <column n>
    

    Ken Whiteが言うように、集約関数はMIN()のようなものです。 、MAX()COUNT() など。すべてでグループ化する 集計されていない列。

    これは、MEMBERSが意図したとおりに機能する場合にのみ機能します テーブルはMEMBER_IDで一意です 、しかしあなたの質問に基づいて私はそれがそうであると思う。意味を明確にするために、テーブルがMEMBER_IDで一意でない場合 その場合、MEMBER_IDごとのセッション数はカウントされません。 ただし、MEMBER_IDあたりのセッション数 および MEMBER_NAMEごと 。それらが1:1の関係にある場合、それは事実上同じことですが、複数のMEMBER_NAMEを持つことができる場合 s per MEMBER_ID そうではありません。



    1. アドホックSQLと関数のPostgreSQLパフォーマンス

    2. MySQLが文字列を自動的に数値に変換するのはなぜですか?

    3. SQLDeveloperは、テーブルと表示されている接続の下にテーブルを表示しません

    4. オラクルが日と分を引く