1

下の表に、試験でAを取得した学生の数を取得する必要があることがあります。これは私が以下の表から達成したいことです:

3Aの=0人の学生。2 A=3人の学生。

+--------------+------------+------+
|  student_ID  | kod_subjek | gred |
+--------------+------------+------+
| 746123096687 | 02         | A    |
| 746123096687 | 12         | B    |
| 746123096687 | 21         | A    |
| 860206145454 | 12         | A    |
| 860206145454 | 02         | A    |
| 881012085535 | 02         | A    |
| 881012085535 | 21         | A    |
+--------------+------------+------+

私は試してみます:

mysql> SELECT student_ID, COUNT(gred) FROM data_exam GROUP BY student_ID;

出力は次のとおりです。

+--------------+-------------+
| student_ID   | COUNT(gred) |
+--------------+-------------+
| 746123096687 |           3 |
| 860206145454 |           2 |
| 881012085535 |           2 |
+--------------+-------------+

動作しません。特定の生徒のすべての成績がカウントされます。これを解決するのを手伝ってください。ありがとうございました。

4

2 に答える 2

2
SELECT a_count, COUNT(*) AS cnt
FROM
(
  SELECT COUNT(*) AS a_count
  FROM data_exam
  WHERE gred = 'A'
  GROUP BY student_id
) x
GROUP BY a_count
ORDER BY a_count

SQLの例-Fiddleは次を返します。

a_count   cnt
      2     3
于 2012-10-07T14:09:54.157 に答える
1

サブクエリを使用できます。

SELECT num_as, COUNT(1) AS num_students
FROM (
  SELECT student_ID, COUNT(gred) AS num_as
  FROM data_exam
  WHERE gred = 'A'
  GROUP BY student_ID
) counts_by_student
GROUP BY num_as
于 2012-10-07T14:05:30.493 に答える