在特定课程中回答考试的用户数

时间:2017-12-01 08:26:24

标签: mysql sql mysql-workbench

我想要的是什么:

我正在尝试在创建表格时创建一个非常特殊的计数。 所以,有些用户会关注课程。在那些课程中,有很多问题(考试)==>我想知道有多少用户提交了问题的答案。

我有什么:

我已经获取了第一次回答的用户数量(他们可以随时回答问题)。所以我可以显示第一个答案的平均成绩。

示例:

所以,让我们说,他们第一次回答问题A,这是分散:

  • 5个用户将获得问题A的等级0
  • 15个用户将获得问题A的等级20
  • 10个用户将获得问题A的等级40
  • 25个用户将获得问题A的等级60
  • 5个用户将获得问题A的等级80
  • 5个用户将获得问题A的等级100

所以在这里,在我的代码中,我想为问题A的每一行显示一个包含65(用户总和)的新列。所以每个问题都有一个......

到目前为止,这就是我所做的:

DROP TABLE IF EXISTS First_Attempt_Problem_Grades_Wesh;
CREATE TABLE First_Attempt_Problem_Grades_Wesh (
  UserID VARCHAR(255),
  problemID VARCHAR(255),
  First_Grade INT UNSIGNED,
  Platform VARCHAR(20),
  DataPackageID VARCHAR(255),
  NStudent_Per_DataPackageId INT UNSIGNED,
  INDEX (UserID)
);

INSERT INTO First_Attempt_Problem_Grades_Wesh
SELECT
  x.AccountUserID as UserID, 
  x.ProblemID,
  x.Grade as First_Grade,
  'Wesh' AS Platform,
  x.DataPackageID,
  NStudent_Per_DataPackageId
FROM wesh_problem_events_with_info x
  INNER JOIN
    (SELECT
      DISTINCT p.AccountUserID,
      p.ProblemID,
      MIN(p.Timestamp) as First_time,
      COUNT(p.AccountUserID) as NStudent_Per_DataPackageId
    FROM wesh_problem_events_with_info p
    GROUP BY p.AccountUserID, p.ProblemID)  t
  ON x.AccountUserID = t.AccountUserID AND x.ProblemID = t.ProblemID AND x.Timestamp = t.First_time
WHERE x.Grade IS NOT NULL

但是对于这个表,我在“NStudent_Per_DataPackageId”列中得到的数字是错误的...正如你所看到的:

Result of this query

实际上,问题1NLpP在图像底部被提及3次,返回的数字是1 ...如何正确地实现此查询?

0 个答案:

没有答案