我有一个如下的表'tbl_student_daily_attendance'
daily_id|stud_id|status
1 |1 |0
2 |1 |1
3 |1 |0
4 |1 |1
5 |2 |1
6 |2 |1
7 |2 |0
8 |2 |1
状态列代表当前和不存在,分别为1和0。
我想要的输出是显示状态最大的stud_id(即status = 1)
在上述情况下,它应返回stud_id = 2
答案 0 :(得分:0)
您可以尝试通过stud_id
中的status = 1
来获取总金额。然后按总量排序并获得第一个(最大存在(即status = 1))
查询#1
SELECT stud_id
FROM tbl_student_daily_attendance t1
GROUP BY stud_id
ORDER BY SUM(status = 1) DESC
LIMIT 1;
结果
| stud_id |
| ------- |
| 2 |
答案 1 :(得分:0)
您可以使用下面的子查询
select stud_id
from
tbl_student_daily_attendance
group by stud_id
having sum(status) =
( select max(s) from
(select sum(status) s,
stud_id
from tbl_student_daily_attendance
group by stud_id
) t1
)
答案 2 :(得分:0)
我将GROUP BY
与SUM()
一起使用:
SELECT stud_id
FROM tbl_student_daily_attendance t1 s
GROUP BY stud_id
ORDER BY SUM(status) DESC
LIMIT 1;
这只会给出一行,如果您与其他学生的礼物有联系,则可以:
SELECT stud_id
FROM tbl_student_daily_attendance t1 s
GROUP BY stud_id
HAVING SUM(status) = (SELECT MAX(status)
FROM (SELECT stud_id, SUM(status) as status
FROM tbl_student_daily_attendance t1 s
GROUP BY stud_id
)
);
答案 3 :(得分:0)
您可以做的是利用子查询来处理该方案。 首先,您可以将stud_id及其对应的计数通过将其在学生ID上与状态的where子句进行分组来获取。
Select stud_id,count(*) as count from tbl_student_daily_attendance where status=1
group by stud_id
然后,根据上述查询结果,您可以获取带有学生ID的最大计数。完整的查询如下所示:
select stud_id,max(count) from (Select stud_id,count(*) as count from
tbl_student_daily_attendance where status=1 group by stud_id);
我希望这会有所帮助!