我在组织中的生产数据库上工作。我遇到过一个场景。这是我生成的示例数据。实际数据仅类似,只需更改字段名称即可。 我的表结构与此类似,
JSONOArray jsonArray = null;
try{
jsonArray = new JSONArray(result);
for(int i=0;i<jsonArray.length;i++){
JSONObject jsonObject=jsonArray[i];
receivedCount=jsonObject.getInt("CurrentCount");
}
}catch(JSONException e) {
e.printStackTrace();
}
我想算一下学生总数(非常简单)。但在这里,我的要求是如果对于2名学生,loginDetail是相同的,那么将他们视为一名学生。
因此,从上面的示例中,StudentId 333,555和777具有相同的Facebook电子邮件ID。因此,当我计算学生人数时,即使gmail帐户不同,我也必须将这两个学生ID视为1。因此,即使一个登录详细信息相同,对于2个人,我也只想将这2个人视为1个人。在生产数据中,还有这样的数据,我必须根据他们的登录详细信息将4-5人ID视为一个人。
因此,对于上面的示例表,我需要生成查询,该查询返回学生总数为3.(不是5)。 不同的学生ID将是(333,555,777),444和666
答案 0 :(得分:1)
像tis这样的查询会给你输出:
SELECT
count(*), -- only for test
GROUP_COUNCAT(t.studentId) AS stundents,
t.loginDetails,
MAX(t.loginType) as loginType,
t.studentId
FROM tableAi t
GROUP BY t.loginDetails
HAVING count(*) = 2;