首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对Oracle中的重复行进行计数,然后根据重复行数进行计算

问如何对Oracle中的重复行进行计数,然后根据重复行数进行计算
EN

Stack Overflow用户
提问于 2016-05-24 08:27:08
回答 2查看 38关注 0票数 0

例如,我有一个这样的表:

代码语言:javascript
复制
Name            Grade
John Smith      3
John Smith      3
John Smith      3

所以基本上我想要计算重复的行数,然后用这个数字乘以成绩,得到一个总成绩。

最后,它应该看起来像这样:

代码语言:javascript
复制
Name            Grade
John Smith      9
EN

回答 2

Stack Overflow用户

发布于 2016-05-24 08:34:38

如果您只想列出重复项,那么:

代码语言:javascript
复制
SELECT name,
       SUM( grade ) AS total_grade
FROM   table_name
GROUP BY name
HAVING   COUNT(1) > 1

如果希望包含唯一行,则省略HAVING子句。

如果同一名称可以有不同的等级,并且您只想考虑名称和等级的重复,则:

代码语言:javascript
复制
CREATE TABLE table_name ( name, grade ) AS
SELECT 'John Smith', 3 FROM DUAL UNION ALL
SELECT 'John Smith', 3 FROM DUAL UNION ALL
SELECT 'John Smith', 3 FROM DUAL UNION ALL
SELECT 'John Smith', 2 FROM DUAL UNION ALL
SELECT 'John Smith', 2 FROM DUAL UNION ALL
SELECT 'John Smith', 1 FROM DUAL;

SELECT name,
       grade,
       COUNT(1) * grade AS total_grade
FROM   table_name
GROUP BY name, grade
HAVING   COUNT(1) > 1;

将输出:

代码语言:javascript
复制
NAME            GRADE TOTAL_GRADE
---------- ---------- -----------
John Smith          2           4 
John Smith          3           9 
票数 3
EN

Stack Overflow用户

发布于 2016-05-24 08:32:30

这称为group by

代码语言:javascript
复制
select name, sum(grade)
from t
group by name;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37402613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档