假设有一个带有列的表格,作为学生表现的详细信息。
Student(name,subject,marks,verdict('pass'/'fail')).
我需要在此表中还有另一列,即-特定学生不及格的科目的成绩总和。
在MySQL中,我可以编写:
select *,
select (sum(marks) from Student where name=s.name and verdict='fail')
from Student s;
但这在蜂巢中不起作用。
错误:不支持的子查询表达式无效的子查询。 SELECT中的子查询只能是顶级表达式。
该怎么办?
答案 0 :(得分:2)
您可以尝试在子查询上使用左联接
select s.*, t.marks
from Student s
left join (
select (name ,sum(marks) marks
from Student
where verdict='fail'
group by name)
) t on t.name = s.name
最终尝试在表格学生列名称上添加适当的索引
答案 1 :(得分:0)
select
`name`,
`verdict`,
concat_ws('|', collect_set(`subject`)),
sum(`marks`)
from Student
group by name,verdict