event_id、home_team、集約関数の結果など、いくつかの結合されたテーブルから3つの列を選択しようとしています。 event_idは、オートインクリメントされた主キーです。 home_teamは、テーブルのすべてのレコードに固有のものではありません。 event_idでグループ化して集計関数を生成し、集計関数の結果をもっとも高い3つの値をソートしたいとします。しかし、私はhome_teamも一意にしたいと思っています。これどうやってするの?レコードにhome_team、event_id、および集計関数の結果があるため、DISTINCTを実行できません。私のDiSTINCTクエリは何もしないので、event_idは常に一意になります。GROUP BYと複数の列の一意性
私はevent_idでグループ化する必要があります。集計関数はそれに依存しているため、私はhome_teamでグループ化できません。両方でIグループは、それが助けにはなりません場合はどちらか
Table 1
id: 1
event_id: 1
value: 2
id 2
event_id: 1
value: 6
id 3
event_id: 2
value: 4
id4
event_id: 2
value: 3
id5
event_id: 3
value: 1
例
...理由は表2
event_id (PK, autoincremented): 1
home_team: 1
event_id: 2
home_team 2
event_id: 3
home_team: 1
SELECT *, AVG(table1.value) as average FROM table1 JOIN table2 ON table1.event_id = table2.event_id GROUP BY table2.event_id ORDER BY average DESC
私は正しいを生成するためにtable2.event_idによってグループに必要集計関数の結果。同じEVENT_IDなどを持っている
GROUP BY event_id, home_team
この意志グループレコードだけ:しかし、私はまた、所望の出力を2つのevent_id 1との結果とevent_idの2
私はあなたを理解していません。単一のevent_idのドメイン内に複数のhome_teamsが存在する可能性がありますか?もしそうなら、どのように「選択する」を選択しますか? –
もう少し詳細が必要だと思います。あなたが説明しようとしていることを説明するために、SQLやSQLの単純版を提供できますか? –
ありがとう、私は例を投げた。うまくいけば物事をより明確にすることができたらうれしいです... 助けてくれてありがとうございます –