我有三个单独的表格,分别代表三周的学生出勤情况。我希望能够生成四列,按周分割每个学生的出勤情况。如果学生每周出席多次,则应添加出席的次数。此外,如果学生在一周内出席,而下一周没有出席,则当月出席的学生将获得 1(假设仅出席一次),而缺勤的学生将获得 0。我尝试了 count() 和 join 的多种变体,但没有成功。任何帮助将不胜感激。以下是截断的 fiddle :
http://www.sqlfiddle.com/#!9/b847a
这是我想要实现的目标的示例:
名称 |当前周|上周 |两星期前
宝拉 | 0 | 2 | 3
最佳答案
您应该只有一个包含一周一栏的表,而不是三个表。因此,自然地,针对您的请求的一种解决方案是使用 UNION ALL
即时构建它:
select
name,
sum(week = 'currentWeek') as currentWeek,
sum(week = 'lastWeek') as lastWeek,
sum(week = 'thirdWeek') as thirdWeek
from
(
select 'currentWeek' as week, name from currentWeek
union all
select 'lastWeek' as week, name from lastWeek
union all
select 'thirdWeek' as week, name from thirdWeek
) all_weeks
group by name
order by name;
(如果你想连接三个表,你需要完全外连接,如果我没记错的话,MySQL不支持。无论如何,我的建议是改变数据模型。)
关于mysql - 从三个独立的表中收集数据,sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51094186/