我在Oracle中有一个表,它包含多个列,如下所示。
我正在寻找一种聚合此表上的值的方法,以显示Region为“Region name”的国家/地区
accnt country region value
--------------------------------------
1 A AS 20
1 B AS 70
1 C AF 10
2 D NA 50
2 E AS 40
2 F AF 10
3 G NA 30
3 H AS 30
4 I NA 50
4 J NA 40
4 K NA 20
我怎样才能实现这一目标?
感谢您的帮助
答案 0 :(得分:0)
您可以使用sum
功能,并按region
:
SELECT region, SUM(value)
FROM mytable
GROUP BY region
答案 1 :(得分:0)
对于特定地区,您可以这样做:
select count(*) totalcountries, sum(value) as totalvalue
from tablename
where region = 'AS'
结果:
| totalcountries | totalvalue |
|----------------|------------|
| 4 | 160 |
对于多个地区,您可以这样做:
select count(*) as totalcountries, sum(value) as totalvalue
from test1
where region in ('AS','NA')
结果:
| totalcountries | totalvalue |
|----------------|------------|
| 9 | 350 |
要按地区获取信息,您可以执行Mureinik所提到的
select region, count(*) as totalcountries, sum(value) as totalvalue
from test1
group by region
结果:
| region | totalcountries | totalvalue |
|--------|----------------|------------|
| AF | 2 | 20 |
| AS | 4 | 160 |
| NA | 5 | 190 |
如果您想按地区获取信息,但仅限于几个地区,您可以这样做:
select region, count(*) as totalcountries, sum(value) as totalvalue
from test1
where region in ('AS', 'NA')
group by region;
结果:
| region | totalcountries | totalvalue |
|--------|----------------|------------|
| AS | 4 | 160 |
| NA | 5 | 190 |
这是MySQL的一个例子;相同的查询将与Oracle一起使用。由于SQLFiddle与Oracle不兼容,我选择使用MySQL对信息进行采样:http://sqlfiddle.com/#!9/081c0/4