Mysql SQL中的水平计数

Mysql SQL中的水平计数,mysql,Mysql,这是一个存储有15节课的学生出席情况的表格。ATD表示有人参加,ABS表示缺席,MED表示医疗。我需要计算有多少天出席,有多少天缺席以及平均。如果某个医疗会话没有被视为缺席。仅考虑前4列,标准化设计可能是这样的(尽管我怀疑存储1或0代替ATD/ABS更为常见: student_id* s* value 377 1 ATD 377 2 ATD 377 3 ATD 378 1 ATD 378 2 ATD 378


这是一个存储有15节课的学生出席情况的表格。ATD表示有人参加,ABS表示缺席,MED表示医疗。我需要计算有多少天出席,有多少天缺席以及平均。如果某个医疗会话没有被视为缺席。

仅考虑前4列,标准化设计可能是这样的(尽管我怀疑存储1或0代替ATD/ABS更为常见:

student_id* s* value
377         1  ATD
377         2  ATD
377         3  ATD
378         1  ATD
378         2  ATD
378         3  ABS
381         1  ATD
381         2  ATD
381         3  ATD
382         1  ATD
382         2  ATD
382         3  ATD

*
=(主键的组成部分)

重复组几乎总是数据库设计不佳的标志。它们使简单的事情变得困难。您应该考虑将此表规范化为第一个正常形式。然后简单的事情就会变得容易。
选择(s1='ATD')+(s2='ATD')+…+(s15='ATD'))作为ATD_金额,
。但是标准化是最好的选择。明白。非常感谢您能帮我标准化吗?