如何用SQL语句求某个字段的和?

时间:2023-01-28 14:57:03
1`数据库的某个字段是数值型的。如何求出这个字段的总和?
2`如何求出这个字段满足某个条件的总和?
用SQL语句怎么写啊。

23 个解决方案

#1


Select SUM(字段名) From TableName Where 条件

#2


select sum(field_name) from table_name 
select sum(field_name) from table_name where condition

#3


1.Select SUM(字段名) from Table

2.select SUM(字段名) from Table
  where 字段1=条件
    and 字段2=条件
 例:select sum(salary) from table
    where salary > 1000

#4


SUM
返回表达式中所有值的和,或只返回 DISTINCT 值。SUM 只能用于数字列。空值将被忽略。

语法
SUM ( [ ALL | DISTINCT ] expression ) 

参数
ALL

对所有的值进行聚合函数运算。ALL 是默认设置。

DISTINCT

指定 SUM 返回唯一值的和。

expression

是常量、列或函数,或者是算术、按位与字符串等运算符的任意组合。expression 是精确数字或近似数字数据类型分类(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。

返回类型
以最精确的 expression 数据类型返回所有表达式值的和。

表达式结果 返回类型 
整数分类 int 
decimal 分类 (p, s) decimal(38, s) 
money 和 smallmoney 分类 money 
float 和 real 分类 float 


 



重要  当使用 CUBE 或 ROLLUP 时,不支持区分聚合,例如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用了,Microsoft® SQL Server™ 将返回错误信息并取消查询。


示例
A. 在聚合和行聚合中使用 SUM
下列示例显示聚合函数和行聚合函数之间的区别。第一个示例显示只提供汇总数据的聚合函数,第二个示例显示提供详尽数据和汇总数据的行聚合函数。

USE pubs
GO
-- Aggregate functions
SELECT type, SUM(price), SUM(advance)
FROM titles
WHERE type LIKE '%cook'
GROUP BY type
ORDER BY type
GO

下面是结果集:

type                                                               
------------ -------------------------- -------------------------- 
mod_cook     22.98                      15,000.00                  
trad_cook    47.89                      19,000.00                  

(2 row(s) affected)

USE pubs
GO
-- Row aggregates
SELECT type, price, advance
FROM titles
WHERE type LIKE '%cook'
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type

下面是结果集:

type         price                      advance                    
------------ -------------------------- -------------------------- 
mod_cook     19.99                      0.00                       
mod_cook     2.99                       15,000.00                  

             sum
             ==========================
             22.98                      
                                        sum
                                        ==========================
                                        15,000.00                  

type         price                      advance                    
------------ -------------------------- -------------------------- 
trad_cook    20.95                      7,000.00                   
trad_cook    11.95                      4,000.00                   
trad_cook    14.99                      8,000.00                   

             sum
             ==========================
             47.89                      
                                        sum
                                        ==========================
                                        19,000.00                 

(7 row(s) affected)

B. 计算多列的组合计 
下例计算每类书籍的价格和预付款总和。

USE pubs
GO
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
ORDER BY type
GO

下面是结果集:

type                                                               
------------ -------------------------- -------------------------- 
business     54.92                      25,125.00                  
mod_cook     22.98                      15,000.00                  
popular_comp 42.95                      15,000.00                  
psychology   67.52                      21,275.00                  
trad_cook    47.89                      19,000.00                  
UNDECIDED    (null)                     (null)                     

(6 row(s) affected)

#5


select sum(isnull(employeeid,0)) as employeeidsum,orderid from orders
where orderid>10000
group by orderid 
这个例子是SQL Server里的NorhtWind 的orders表的处理

#6


group by不能少啊!

#7


Select SUM(字段名) From TableName Where 条件

#8


怎么把求出的和用label1.caption表示出来啊?

#9


2`如何求出这个字段满足某个条件的总和?
select sum(字段) 
from 表
where 条件(一般字段条件)

select sum(字段) 
from 表
having sum(字段)>1000(合计条件)

#10


怎么把求出的和用label1.caption表示出来啊?

#11


怎么把求出的和用label1.caption表示出来啊?

#12


根据(如使用ADOQUERY)
Select SUM(字段名)AS GETSUM From TableName Where 条件
有:
label1.caption:=ADOQUERY.FIELDBYNAME('GETSUM').ASSTRING;

#13


SQLServer 的help 写的很详细
楼上各位写的也不错

#14


怎么把求出的和用label1.caption表示出来啊?

#15


怎么把求出的和用label1.caption表示出来啊?
我用的是BDE

#16


怎么把求出的和用label1.caption表示出来啊?
我用的是BDE

#17


语法
SUM ( [ ALL | DISTINCT ] expression )

#18


with query1 do
begin
  close;
  sql.clear;
  sql.text:='Select SUM(字段名)AS GETSUM From TableName Where 条件';
  open;
end;
label1.caption:=query1.fields[0].asstring;

#19


select sum(field_name) from table_name 
select sum(field_name) from table_name where condition
没事先看看书

#20


SUM(字段)函数呀,字段必须为整形,浮点型和货币性
1.Select SUM(字段名) from Table

2.select SUM(字段名) from Table
  where 字段1=条件
    and 字段2=条件

#21


呵呵,老兄怎么搞的
有时间多看看书嘛
问这么简单(

#22


:)

with query1 do
begin
  close;
  sql.clear;
  sql.add('Select SUM(字段名)AS GETSUM From TableName Where 条件');
  open;
  label1.caption:=fields[0].asstring;
end;

#23


下面是我的语句为何出错呀?
jzsql.close;
jzsql.sql.clear;
jzsql.sql.add('select count(*),sum(ffee),sum(fadd_fee),sum(fserv_fee),sum(finfo),sum(ftotal) from frecord where stype=1;');
jzsql.Open;
提示:Table is read only.为何?

#1


Select SUM(字段名) From TableName Where 条件

#2


select sum(field_name) from table_name 
select sum(field_name) from table_name where condition

#3


1.Select SUM(字段名) from Table

2.select SUM(字段名) from Table
  where 字段1=条件
    and 字段2=条件
 例:select sum(salary) from table
    where salary > 1000

#4


SUM
返回表达式中所有值的和,或只返回 DISTINCT 值。SUM 只能用于数字列。空值将被忽略。

语法
SUM ( [ ALL | DISTINCT ] expression ) 

参数
ALL

对所有的值进行聚合函数运算。ALL 是默认设置。

DISTINCT

指定 SUM 返回唯一值的和。

expression

是常量、列或函数,或者是算术、按位与字符串等运算符的任意组合。expression 是精确数字或近似数字数据类型分类(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。

返回类型
以最精确的 expression 数据类型返回所有表达式值的和。

表达式结果 返回类型 
整数分类 int 
decimal 分类 (p, s) decimal(38, s) 
money 和 smallmoney 分类 money 
float 和 real 分类 float 


 



重要  当使用 CUBE 或 ROLLUP 时,不支持区分聚合,例如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用了,Microsoft® SQL Server™ 将返回错误信息并取消查询。


示例
A. 在聚合和行聚合中使用 SUM
下列示例显示聚合函数和行聚合函数之间的区别。第一个示例显示只提供汇总数据的聚合函数,第二个示例显示提供详尽数据和汇总数据的行聚合函数。

USE pubs
GO
-- Aggregate functions
SELECT type, SUM(price), SUM(advance)
FROM titles
WHERE type LIKE '%cook'
GROUP BY type
ORDER BY type
GO

下面是结果集:

type                                                               
------------ -------------------------- -------------------------- 
mod_cook     22.98                      15,000.00                  
trad_cook    47.89                      19,000.00                  

(2 row(s) affected)

USE pubs
GO
-- Row aggregates
SELECT type, price, advance
FROM titles
WHERE type LIKE '%cook'
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type

下面是结果集:

type         price                      advance                    
------------ -------------------------- -------------------------- 
mod_cook     19.99                      0.00                       
mod_cook     2.99                       15,000.00                  

             sum
             ==========================
             22.98                      
                                        sum
                                        ==========================
                                        15,000.00                  

type         price                      advance                    
------------ -------------------------- -------------------------- 
trad_cook    20.95                      7,000.00                   
trad_cook    11.95                      4,000.00                   
trad_cook    14.99                      8,000.00                   

             sum
             ==========================
             47.89                      
                                        sum
                                        ==========================
                                        19,000.00                 

(7 row(s) affected)

B. 计算多列的组合计 
下例计算每类书籍的价格和预付款总和。

USE pubs
GO
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
ORDER BY type
GO

下面是结果集:

type                                                               
------------ -------------------------- -------------------------- 
business     54.92                      25,125.00                  
mod_cook     22.98                      15,000.00                  
popular_comp 42.95                      15,000.00                  
psychology   67.52                      21,275.00                  
trad_cook    47.89                      19,000.00                  
UNDECIDED    (null)                     (null)                     

(6 row(s) affected)

#5


select sum(isnull(employeeid,0)) as employeeidsum,orderid from orders
where orderid>10000
group by orderid 
这个例子是SQL Server里的NorhtWind 的orders表的处理

#6


group by不能少啊!

#7


Select SUM(字段名) From TableName Where 条件

#8


怎么把求出的和用label1.caption表示出来啊?

#9


2`如何求出这个字段满足某个条件的总和?
select sum(字段) 
from 表
where 条件(一般字段条件)

select sum(字段) 
from 表
having sum(字段)>1000(合计条件)

#10


怎么把求出的和用label1.caption表示出来啊?

#11


怎么把求出的和用label1.caption表示出来啊?

#12


根据(如使用ADOQUERY)
Select SUM(字段名)AS GETSUM From TableName Where 条件
有:
label1.caption:=ADOQUERY.FIELDBYNAME('GETSUM').ASSTRING;

#13


SQLServer 的help 写的很详细
楼上各位写的也不错

#14


怎么把求出的和用label1.caption表示出来啊?

#15


怎么把求出的和用label1.caption表示出来啊?
我用的是BDE

#16


怎么把求出的和用label1.caption表示出来啊?
我用的是BDE

#17


语法
SUM ( [ ALL | DISTINCT ] expression )

#18


with query1 do
begin
  close;
  sql.clear;
  sql.text:='Select SUM(字段名)AS GETSUM From TableName Where 条件';
  open;
end;
label1.caption:=query1.fields[0].asstring;

#19


select sum(field_name) from table_name 
select sum(field_name) from table_name where condition
没事先看看书

#20


SUM(字段)函数呀,字段必须为整形,浮点型和货币性
1.Select SUM(字段名) from Table

2.select SUM(字段名) from Table
  where 字段1=条件
    and 字段2=条件

#21


呵呵,老兄怎么搞的
有时间多看看书嘛
问这么简单(

#22


:)

with query1 do
begin
  close;
  sql.clear;
  sql.add('Select SUM(字段名)AS GETSUM From TableName Where 条件');
  open;
  label1.caption:=fields[0].asstring;
end;

#23


下面是我的语句为何出错呀?
jzsql.close;
jzsql.sql.clear;
jzsql.sql.add('select count(*),sum(ffee),sum(fadd_fee),sum(fserv_fee),sum(finfo),sum(ftotal) from frecord where stype=1;');
jzsql.Open;
提示:Table is read only.为何?