oracle中统计某个字段重复数,并将重复条目的另一个字段求和

表名 ab_cd
matchid buyno cost
01 0001 100.2
01 0002 100.3
02 0003 100.5
03 0004 100
03 0005 100
03 0006 100

我要得到的结果是
(count代表同一matchid下有多少个buyno或者说是matchid的重复数目, costm代表同一matchid的下的cost之和)
matchid count costm
01 2 200.5
02 1 100.5
03 3 300

请用oracle语句!

方法和详细的操作步骤如下:

1、第一步,打开一个数据中包含整数值的表,然后可以在右下角看到该表数据,见下图,转到下面的步骤。

2、第二步,执行完上面的操作之后,自动对表中的数据进行+1,代码见下图,转到下面的步骤。

3、第三步,执行完上面的操作之后,选择“UPDATE biao1 SET age=age+1 ”语句,然后单击左上角的执行查询按钮,或按f9按钮逐一执行该语句,见下图,转到下面的步骤。

4、第四步,执行完上面的操作之后,将sql更改为UPDATE
 biao1 SET age = age * 2,执行该语句,字段中的值将x2计算,这是运算的结果,见下图。这样,就解决了这个问题了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-13
实际上题目考察的就是分组求和。可以通过sum进行求和,count进行数值计算,通过group by进行分组。
sql:select username ,count(accountNo) as count,sum(amount) as amount
from tablename group by username;
以上就可以求出username下,accountNo的条数和对应的总amount。
第2个回答  2011-07-19
select matchid,count(buyno) as count,sum(cost) as costm
from ab_cd
group by matchid
根据id分组 取出同一id的buyno数量 再取出 同一id的 cost总和 基本如此了...追问

我在综合查询的时候 涉及到2个主表, 然后查出的结果有完全重复的行
怎么在显示的时候同时删除那些重复的行 只保留1行

追答

你查询的那个列加上distinct 列名 from tab
我记得以前写过在条件里面加 distinct 好久没写过了 忘了... //屏蔽查询出的数据,出现重复的

本回答被提问者采纳
第3个回答  2011-07-19
SELECT matchid, count(buyno) count, sum(cost) costm
from ab_cd
group by matchid

其中ab_cd
count(buyno) 换成count(*)或count(1)都是可以的
第4个回答  2011-07-19
SELECT matchid, count(buyno), sum(cost)
from ab_cd
group by matchid
相似回答