在mysql中使用select语句进行分区

时间:2017-08-29 19:59:36

标签: sql group-by division

我正在尝试划分两个选择查询,但我在除数中有一个问题抛出“错误代码:1242。子查询返回超过1行”

这就是我的陈述

下面的陈述很好地给我一个按col2分组的总和值列表:

(select sum(Tab1.col1) from Tab1 where
 Tab1.col2 in(select Tab1.col2 from Tab1 join Tab2 on Tab2.col2=Tab1.col2 ) 
 and Tab1.col3='general_consumption' group by Tab11.col2);

但是,当我使用上面的查询时,如下所示:

(Select (Tab1.Col4)from Tab1) /(select sum(Tab1.col1) from Tab1 where
 Tab1.col2 in(select Tab1.col2 from Tab1 join Tab2 on Tab2.col2=Tab1.col2 ) 
 and Tab1.col3='general_consumption' group by Tab11.col2);

我收到此错误:

  

错误代码:1242。子查询返回的行数超过1行

如果我能以任何其他方式使用它,请告诉我。

1 个答案:

答案 0 :(得分:0)

这是问题

  

从Tab1

中选择(Tab1.Col4)

返回所有行

正确的语法是:

  

选择(Tab1.Col4)/(从Tab1中选择总和(Tab1.col1),其中Tab1.col2   in(从Tab1选择Tab1.col2,在Tab2.col2 = Tab1.col2上加入Tab2)和   Tab1.col3 =' general_consumption'来自Tab1的Tab1.col2组;