私のテーブル
+------+--------+---------+-------+--------+
| NAME | GROUP1 | SECTION | MARKS | POINTS |
+------+--------+---------+-------+--------+
| S1 | G1 | class1 | 55 | (null) |
| S16 | G1 | class1 | 55 | (null) |
| S17 | G1 | class1 | 55 | (null) |
| S2 | (null) | class2 | 33 | (null) |
| S25 | G10 | class1 | 55 | (null) |
| S26 | G10 | class1 | 55 | (null) |
| S4 | G88 | class2 | 65 | (null) |
| S5 | G88 | class2 | 65 | (null) |
| S32 | (null) | class1 | 65 | (null) |
| S7 | G5 | class1 | 32 | (null) |
| S18 | G5 | class1 | 32 | (null) |
| S10 | (null) | class2 | 78 | (null) |
| S8 | G8 | class1 | 22 | (null) |
| S20 | G8 | class1 | 22 | (null) |
| S22 | G9 | class1 | 20 | (null) |
| S23 | G9 | class1 | 20 | (null) |
| S13 | G55 | class2 | 33 | (null) |
| S36 | G55 | class2 | 33 | (null) |
+------+--------+---------+-------+--------+
SQL フィドル: http://www.sqlfiddle.com/#!2/f4b54/1/0
質問をより明確に改善しようとしたコメントによると、私は以前にこの質問を提起しました。
各セクションで最高点を獲得した最初の 3 つのグループに特定のポイントを与えようとしています。セクションで最高の成績を収めた生徒にはそれぞれ 5 ポイント、2 番目に高い成績のグループには 3 ポイント、3 番目に高いグループには 1 ポイントを追加したいと思います。グループに重複マークが発生する場合があります。
例: クラス 1 - グループ 'G1' と 'G10' は '55' を取得し、'class1' で最高点を取得しました。ですから、グループ「G1」と「G10」のすべての生徒に「5」ポイントを与えたいと思います。
グループ G5 は 2 番目に高い点数を獲得したため、そのグループのすべての生徒は 3 点を与える必要があります。同じように G8 - 1 ポイント。
plz note : グループ ID を持っていない学生は、その学生が単一の項目に参加していると見なされません。
私は次のコードを使用しています。このコードは個々の学生には問題なく機能しますが、グループ メンバーにポイントを与える方法がわかりません。
select t1.Name, t1.Section, t1.Marks from myTable t1 join
(select Section, substring_index(group_concat (distinct Marks order by Marks desc),
',', 3) as Marks3 from myTable where Section = 'class1' group by Section ) tsum
on t1.Section = tsum.Section and find_in_set(t1.Marks, tsum.Marks3) > 0
ORDER BY Section, Marks DESC, ID Desc
私の最終的な出力はセクションを探します。セクション (class1) を 1 つだけ指定してください
+------+--------+---------+-------+--------+
| NAME | GROUP1 | SECTION | MARKS | POINTS |
+------+--------+---------+-------+--------+
| S1 | G1 | class1 | 55 | 5 |
| S16 | G1 | class1 | 55 | 5 |
| S17 | G1 | class1 | 55 | 5 |
| S2 | (null) | class2 | 33 | (null) |
| S25 | G10 | class1 | 55 | 5 |
| S26 | G10 | class1 | 55 | 5 |
| S4 | G88 | class2 | 65 | (null) |
| S5 | G88 | class2 | 65 | (null) |
| S32 | (null) | class1 | 65 | (null) |
| S7 | G5 | class1 | 32 | 3 |
| S18 | G5 | class1 | 32 | 3 |
| S10 | (null) | class2 | 78 | (null) |
| S8 | G8 | class1 | 22 | 1 |
| S20 | G8 | class1 | 22 | 1 |
| S22 | G9 | class1 | 20 | (null) |
| S23 | G9 | class1 | 20 | (null) |
| S13 | G55 | class2 | 33 | (null) |
| S36 | G55 | class2 | 33 | (null) |
+------+--------+---------+-------+--------+
親切に私を助けて..