SQL:为什么这个SQL语句的sum报错呢?

创建测试表(PostgreSQL):

create table employee
(
id integer,
salary integer,
age integer
)
插入测试数据:
insert into employee values(1,1200,32);
insert into employee values(2,940,22);
insert into employee values(3,880,24);

使用一条SQL语句统计出如下条件
salary>900,age>35
salary>900,age<35
salary<900,age>35
salary<900,age<35

select sum(salary>900 && age>35) category1,
sum(salary>900 && age<35) category2,
sum(salary<900 && age>35) category3,
sum(salary<900 && age<35) category4
from employee;

报错如下
错误: 语法错误 在 ">" 或附近的
LINE 1: select sum(salary>900 && age>35) category1,
^

********** 错误 **********

错误: 语法错误 在 ">" 或附近的
SQL 状态: 42601
字符:29

第1个回答  2014-07-28

sum里必须是字段而不是条件,你这个得写4个子查询

而且你要的应该是计数而不是总和

select a1.category1, a2.category2... from
(select count(*) category1 from employee where salary>900 and age>35) a1,
(select count(*) category2 from employee where salary>900 and age>35) a2,
....

第2个回答  2014-07-28

你这个应该用case when吧

select sum(case when salary>900 and age>35 then 1 else 0 end) category1,
       sum(case when salary>900 and age<35 then 1 else 0 end) category2,
       sum(case when salary<900 and age>35 then 1 else 0 end) category3,
       sum(case when salary<900 and age<35 then 1 else 0 end) category4
from employee;

 这个是查工资大于或小于900的不同年龄段的人数

本回答被提问者采纳
第3个回答  2014-07-28
create table #employee
(
   id integer,
   salary integer,
   age integer
)
--插入测试数据:
insert into #employee values(1,1200,32);
insert into #employee values(2,940,22);
insert into #employee values(3,880,24);

/*--使用一条SQL语句统计出如下条件
salary>900,age>35
salary>900,age<35
salary<900,age>35
salary<900,age<35
*/


select case when salary>900 and age>35 then count(id)
 when salary>900 and age<35 then count(id)
 when salary<900 and age>35 then count(id)
 when salary<900 and age<35 then count(id)
else 0 end
from #employee
group by salary,age

SQL:为什么这个SQL语句的sum报错呢?
sum里必须是字段而不是条件,你这个得写4个子查询 而且你要的应该是计数而不是总和 select a1.category1, a2.category2... from(select count(*) category1 from employee where salary>900 and age>35) a1,(select count(*) category2 from employee where salary>900 and age>35) a2,....

sql 查询时候 用了group by sum统计有误?
销售量也就扩大到多少倍.例如:编号为1的,在a表中有5条通话记录,在b表中有一条记录,销售量为4.然后a表和b表一关联,就出现了5条都有销售量为4的记录,在这样的情况下,sum(销售量)的结果就是5(条记录)*4(每条记录的销售量)=20.得到这样的结果肯定不是你所需要的。

关于SQL语句中Sum函数求和报无效字符的问题
select sum(to_number(MSG_FEE)+to_number(b_tollFee)+to_number(b_tollFee2)) from cl_tx_01;

ASP中SQL的count,sum函数出错,请大虾帮忙看看
sum(case when 职别='上级检查' then 1 else 0 end) as 上级检查,sum(case when 职别='工人' then 1 else 0 end) as 工人 from xjkq where 时长 is null group

sql中sum()怎么不输出
sql中sum()不输出的原因是没有输出语句。根据查询相关公开信息显示sql要进行输出需要写输出语句,否者程序并不会输出结果。媒介由内部到外部的传递过程。

SQL 对结果 进行百分比 运算报错
1、若针对每行求百分比:select SA\/TotelTime ,SB\/TotelTime ,SC\/TotelTime ,SD\/TotelTime ,SE\/TotelTime from 表名 2、若是对总计后的值求百分比:select sum(SA)\/sum(TotelTime) ,sum(SB)\/sum(TotelTime) ,sum(SC)\/sum(TotelTime) ,sum(SD)\/sum(TotelTime) ,sum(SE)\/...

SQL Server中使用sum来统计count的总数据,为什么会有错误,怎么...
拆分成两句 SELECT SUM([mycount]) FROM (SELECT count([列 0]) AS mycount FROM [lunwen].[dbo].[d] where [列 6]like 0 or [列 6]like'' group by [列 0])AS A GO

SQL提示运算符丢失, select sum(1月)from 销售总额
select sum(`1月`) from `销售总额`注意,上面的不是单引号,而是大键盘数字键最左边那个 建议:数据库的库名、表名、字段名,尽量不要用汉字,不要包含特殊字符(包括空格),也不要用数字开头,而且最好不要用单个的英文单词,因为一不小心就可能与SQL的关键词或保留字发生冲突。如果上述情况无法...

SQL SUM用法
SUM() 函数返回数值列的总数。具体语法参考:演示数据库 在本教程中,我们将使用 shulanxt 样本数据库。下面是选自 “access_log” 表的数据:-from 树懒学堂 SQL SUM() 实例 下面的 SQL 语句查找 “access_log” 表的 “count” 字段的总数:...

sql server中用sum条件语句不对会返回什么
SUM(列名)是求和函数,大多数情况需要配合group by 分组功能一起使用的

相似回答