我正在努力简化/别名以下SQL查询。我对SQL很新,希望有人可以指出我正确的方向。
由于该行的第二部分与Where条件以外的第一部分非常相同,我希望将其称为变量" X"。
我尝试使用不同的括号和顺序但我一直遇到语法错误。我的代码如下:
select
(select avg(stars) from LONG EXPRESSION where Condition < Y)
-
(select avg(stars) from LONG EXPRESSION where Condition > Y)
理想情况下,我希望实现与
类似的功能select
(select avg(stars) from (LONG EXPRESSION) X where Condition < Y)
-
(select avg(stars) from X where Condition > Y)
感谢您的帮助。
丹
答案 0 :(得分:0)
我不知道您的用例,但如何将它们合并到一个查询中:
class User < ApplicationRecord
mount_uploader :avatar, AvatarUploader
答案 1 :(得分:0)
Mysql开发人员团队宣布8.0版将有Common Table Expressions in MySQL (CTEs)。所以可能会编写这样的查询:
WITH my_cte AS
(
(LONG EXPRESSION)
)
select (select avg(stars) from (LONG EXPRESSION) X where Condition < Y) - (select avg(stars) from X where Condition > Y);
答案 2 :(得分:0)
尝试使用条件聚合:
select avg(case when Condition < Y then stars end) -
avg(case when Condition > Y then stars end)
from LONG EXPRESSION