对于“from子句”中的重复查询,如何在SQL中更好地执行此查询
有没有办法通过删除select in from子句的重复模式来改进此查询?编写此查询的最佳有效方法是什么?我正在使用SQLite对于“from子句”中的重复查询,如何在SQL中更好地执行此查询,sql,Sql,有没有办法通过删除select in from子句的重复模式来改进此查询?编写此查询的最佳有效方法是什么?我正在使用SQLite select abs(avg(ravg1) - avg(ravg2)) from (select avg(stars) as ravg1 from Movie M join Rating R on M.mID = R.mID group by R.mID having year <
select abs(avg(ravg1) - avg(ravg2))
from (select avg(stars) as ravg1
from Movie M join
Rating R
on M.mID = R.mID
group by R.mID
having year < 1980
),
(select avg(stars) as ravg2
from Movie M join
Rating R on M.mID = R.mID
group by R.mID
having year > 1980
)
如果您希望获得1980年前后的评级差异,则可以使用条件聚合:
select abs(avg(case when year < 1980 then stars end) -
avg(case when year > 1980 then stars end)
)
from Movie M join
Rating R
on M.mID = R.mID;
你在使用什么数据库?你认为这个查询在做什么?我怀疑它在做你想做的事。我在那个问题上反复讨论。最后一个查询只返回一行,因此最后,我没有使用GROUPBY。