sql语句求和
发布网友
发布时间:2022-04-11 00:29
我来回答
共15个回答
热心网友
时间:2022-04-11 01:58
SQL中求和语句分为纵向汇总和横向汇总语句;
假设数据列为:A、B、C、D、E、F、G
纵向汇总语句:
selectsum(A),sum(B),sum(C),sum(D),sum(E),sum(F),sum(G)from表名
横向汇总的SQL语句是:
selectA,B,C,D,E,F,G,A+B+C+D+E+F+Gfrom表名
求所有数据总和的SQL语句是:
selectsum(A)+sum(B)+sum(C)+sum(D)+sum(E)+sum(F)+sum(G)from表名
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。
扩展资料:
sql参考语句
删除新表
drop table tabname
增加一个列
Alter table tabname add column col type
添加主键
Alter table tabname add primary key(col)
删除主键
Alter table tabname drop primary key(col)
创建索引
create [unique] index idxname on tabname(col….)
参考资料来源:百度百科-结构化查询语言
热心网友
时间:2022-04-11 03:16
这个要用到求和函数吧sum(),sql 2000/2005/2008代码如下:
1.创建表
create table 表1
(
名称 char(10),
单位 char(10),
金额 int
)
2.插入数据
insert into 表1 values('a','b',100)
insert into 表1 values('a','b',200)
insert into 表1 values('c','a',100)
3两种方法实现:
1. select 名称,单位,sum(金额) from 表1 group by 名称,单位 order by 名称
2.select 名称,单位,sum(case when 名称='c' then 金额 end) ,SUM(case when 名称='a' then 金额 end)
from 表1 group by 名称,单位 order by 名称
热心网友
时间:2022-04-11 04:51
1)对列求和可以使用聚合函数sum,例如:
select sum(金额)as 合计 from 表名;(不分组对整张表汇总)
select 项目,sum(金额)as 合计 from 表名 group by 项目;(按“项目”分组汇总)
2)横向求和,例如:
select 字段A+字段B+字段C as 横向合计 from 表名;
热心网友
时间:2022-04-11 06:42
select sum(income) from 表名
是查所有的
如果01月有好多条,02月有好多条,03月也有好多条,你要查分月的汇总的话
select data,sum(income) from 表名 group by data
还有,哥们,你英语搞错了,日期是date,你拼写错误了吧
热心网友
时间:2022-04-11 08:50
如果是学号唯一的:
select min(编号),学号,min(姓名),sum(成绩) as '总成绩' from 成绩表 group by 学号
如果是姓名唯一的:
select min(编号),min(学号),姓名,sum(成绩) as '总成绩' from 成绩表 group by 姓名
热心网友
时间:2022-04-11 11:15
select b.编号,b.学号,b.姓名,b.总成绩
from(
select a.编号,a.学号,a.姓名,sum(a.成绩)over(partition by 成绩)as 总成绩,
rank() over(partition by a.姓名 order by rownum) as num
from 表a
)b
where num = 1
-------------------------------------------------------
lz如果是要每个人第一个编号的话,结果和lz要求的一样
1 001 丁一 282
4 001 王二 203
6 001 张三 120
6 001 刘四 107
热心网友
时间:2022-04-11 13:56
就是把名称相同的金额合并是吧!
手写的,试试这个。
update 表1 set 金额=(select sum(金额) from 表1 group by 名称,单位 having count(*)>1)
后面的having count(*)>1也可以去掉,意思是:名称,单位相同的数据大于1个把金额合并!
热心网友
时间:2022-04-11 16:54
1. 原表操作,不用临时表。
1) insert into T (select 名称,单位,count(*) from T group by 名称,单位);
2) delete from (select 名称,单位, row_number() over (partition by 名称,单位 order by 金额 desc) as rk) T where rk<>1
2. 临时表
参见1楼
热心网友
时间:2022-04-11 20:09
select 名称,单位,sum(金额) from Table group by 名称,单位 ,查出来的数据插入到其他表,这个表清空,再把数据倒回来。
热心网友
时间:2022-04-11 23:40
-- SQLServer:
select sum(case when a is null or a = 0 then isnull(b,0) else a end)
from table1
-- Oracle:
select sum(case when a is null or a = 0 then nvl(b,0) else a end)
from table1
热心网友
时间:2022-04-12 03:28
select sum(d1) as d1sum, sum(d2) as d2sum, sum(d3) as d3sum from your_table_name where name in ('张三', '李四') and time = '20180919';
热心网友
时间:2022-04-12 07:33
select (A.sum_pi - B.sum_ci) as result
from
(select sum(t.数量) as sum_pi,
t.编码
from t
where t.编码 = '4001'
and t.类型 = 'pi'
group by t.编码) A,
(select sum(t.数量) as sum_ci,
t.编码
from t
where t.编码 = '4001'
and t.类型 = 'ci'
group by t.编码) B
where A.编码 = B.编码
热心网友
时间:2022-04-12 11:54
你可以先将汇总的结果存入一个临时表,然後删除原表资料,最後再将临时表的资料写入原表
步骤如下:
1.select 名称,单位,sum(金额) as 金额 into table1_tmp from table1 group by 名称,单位
2.truncate table table1
3.insert into table1 select * from table1_tmp
4.drop table1_tmp
热心网友
时间:2022-04-12 16:32
SELECT MIN(编号),学号,姓名,SUM(成绩)
FROM 成绩表
GROUP BY 学号,姓名
ORDER BY MIN(编号)
出来的编号是
1
3
6
6
热心网友
时间:2022-04-12 21:27
SELECT MIN(编号),学号,姓名,SUM(成绩) FROM 成绩表
GROUP BY 学号,姓名
ORDER BY MIN(编号);