エラーはすべてを示しています。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
そうではありません。