2015-12-13 57 views
-1

我在Oracle中有一個由多列組成的表,如下所示。Oracle中的聚合值

進出口尋找在這個表上聚集的值,以顯示國家,地區的「區域名稱」中和的方式

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

期望的輸出是什麼? – zedfoxus

+0

什麼部分是你不知道如何解決:限制你的結果到一個地區或獲得一列的總和?這兩項任務似乎非常基礎。你甚至自己試過了嗎? –

回答

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

+0

感謝您的回覆。我將與「哪裏地區」一起去。 SQL小提琴是偉大的。這裏唯一的問題是原始表中的值來自3個不同的連接。帳戶,國家,地區。所有這些都與使用ID的值錶鏈接。地區與國家相關聯。我可以在完成我的連接之後加入您發送的選擇語句。也許使用存儲過程?謝謝 – Mojatba

+0

聽起來不錯。爲了解決您的問題,請將其中一個答案標記爲已接受。謝謝。 – zedfoxus

0

可以使用sum功能和組你的結果由region

SELECT region, SUM(value) 
FROM  mytable 
GROUP BY region