关于oracle求和的sql怎么写?

select sampling_time as time,(max(A)-min(A)) as total from data where id='1' and sampling_time >= '2013-08-24 00:00:00' and sampling_time < '2016-08-25 00:00:00' group by sampling_time order by sampling_time;
TIME TOTAL
------- ----------
2016-01 80
select sampling_time as time,(max(A)-min(A)) as total from data where id='2' and sampling_time >= '2013-08-24 00:00:00' and sampling_time < '2016-08-25 00:00:00' group by sampling_time order by sampling_time;
TIME TOTAL
------- ----------
2016-01 90
我想在一条sql语句中求id为1和2的值,即结果为:
TIME TOTAL
------- ----------
2016-01 170

第1个回答  2016-08-24
SELECT TIME,SUM(total)
FROM
(
SELECT sampling_time AS TIME, (MAX(A) - MIN(A)) AS total
FROM data
WHERE id = '1'
AND sampling_time >= '2013-08-24 00:00:00'
AND sampling_time < '2016-08-25 00:00:00'
GROUP BY sampling_time
ORDER BY sampling_time;
UNION
SELECT sampling_time AS TIME, (MAX(A) - MIN(A)) AS total
FROM data
WHERE id = '2'
AND sampling_time >= '2013-08-24 00:00:00'
AND sampling_time < '2016-08-25 00:00:00'
GROUP BY sampling_time
ORDER BY sampling_time
) GROUP BY TIME
第2个回答  2016-08-24

select time, sum(total) total
from (
    select 
        sampling_time as time,
        (max(A)-min(A)) as total 
    from data 
    where id='1' 
        and sampling_time >= '2013-08-24 00:00:00' 
        and sampling_time < '2016-08-25 00:00:00' 
    group by sampling_time
    union all
    select 
        sampling_time as time,
        (max(A)-min(A)) as total 
    from data 
    where id='2' 
        and sampling_time >= '2013-08-24 00:00:00' 
        and sampling_time < '2016-08-25 00:00:00' 
    group by sampling_time 
) a
group by time
order by time;

追问

我觉得这个写的有点复杂,实际上两个select语句中只有id是不一样的,其他的条件是一样的,是否可以简化一下?

追答

select time, sum(total) total
from (
    select 
        sampling_time as time,
        id,
        (max(A)-min(A)) as total 
    from data 
    where id in ('1','2')
        and sampling_time >= '2013-08-24 00:00:00' 
        and sampling_time < '2016-08-25 00:00:00' 
    group by sampling_time, id
) a
group by time
order by time;

本回答被提问者和网友采纳

关于oracle求和的sql怎么写?
SELECT TIME,SUM(total)FROM (SELECT sampling_time AS TIME, (MAX(A) - MIN(A)) AS total FROM data WHERE id = '1'AND sampling_time >= '2013-08-24 00:00:00'AND sampling_time < '2016-08-25 00:00:00'GROUP BY sampling_time ORDER BY sampling_time;UNION SELECT sampling_ti...

在oracle数据库中,要求两个字段的和要怎么写sql语句
在oracle数据库中,要求两个字段的和可以用sql语句(前提是两个字段都是数字型):SELECT num1+num2 AS num FROM table_name;其中num1、num2是要求和的两个字段,num是新命名的和字段,table_name是要查询的表名。

在oracle数据库中,要求两个字段的和要怎么写sql语句?
1.如果都是数字类型的直接把这两个字段相加\\x0d\\x0aselect \\x0d\\x0aa+b as ab \\x0d\\x0afrom S ;\\x0d\\x0a或者你的意思是 select sum(a+b) from S;\\x0d\\x0a\\x0d\\x0a2.如果是不同的字段类型就不能求和了,但是可以使用“||”或者CONCAT()函数\\x0d\\x0a2.1 select...

oracle两列值相同,求其他列计算之和sql
SELECT 机构,科目,sum(借方发生额),sum(贷方发生额) FROM tableName GROUP BY 机构,科目

oracle 利用 分组求和一张报表的 字段 金额 sql
select decode(t.f_disqua_level,'1','A类','2','B类','3','C类','4','D类','') as 等级, t.f_process as 发现地点, t.f_discovery_time as 发现时间, t.f_description as 不合格描述, b.f_dutydept as 责任部门, b.f_assess_multiple as 考核倍数, b.f_assess_...

oracle sql sum 根据一个唯一字段计算某个字段的和
先需要一步去重的操作,然后才能继续操作。去重可以用group by也可以用rank开窗。我都写一下,然后你自己判断。group by写法,这个写法两次group效率应该低的吓人,而且感觉有些浪费。max的写法,是因为反正数字一样,max和min没有区别。mid也可以。select description,rolegroupdescription,count(appl_no)...

oracle sum 求和
你的sql是对列zjzh_bankid分类计数,你说的求和是把列zjzh_bankid的所有值相加吗?select sum(zjzh_bankid) from v_Ckyeb;如果是把分类的所有值计算和的话只能分开计算了 select sum(zjzh_bankid) from v_Ckyeb where zjzh_bankid='';...

oracle中的“sum”如何使用?
使用如下:sum是求和函数,例如:select sum(列名) from 表名,用于计算列的总和。1、sum为聚合函数:是 sql语言中一种特殊的函数:聚合函数,SUM, COUNT, MAX, MIN, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。2、其他举例:SELECT SUM(population) FROM COUNTRY ,这里的...

oracle 中 sum 如何使用,
使用如下:sum是求和函数,例如:select sum(列名) from 表名,用于计算列的总和。sum是求指定字段下所有数据的相加总和,select sum(o.amount) from pos_order o 意思就是求出amount这个字段下的数据总和。1、sum为聚合函数:是 SQL语言中一种特殊的函数:聚合函数,SUM, COUNT, MAX, MIN, AV等...

(oracle)sql根据某一字段分组求和后再列出其他字段信息
acd一样的话,可以select a,c,d,sum(b) from table group by a,c,d;除了ab字段外,取c一条记录 select a,c,sum(b) from where c = '你要的c' table group by a,c;

相似回答