2015-12-13 16 views
-1

У меня есть таблица в Oracle, которая состоит из нескольких столбцов, как показано ниже.Совокупные значения в Oracle

Im ищет способ суммирования значений в этой таблице, чтобы показать суммы стран, где регион «Название региона»

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

Спасибо за ваш ответ. Я собираюсь пойти с «Where region in». что SQL Fiddle отлично. единственная проблема здесь в том, что значения в исходной таблице поступают из трех разных объединений. Учетная запись, страна, регион. которые все ссылаются на таблицу значений, используя идентификатор. Регион связан со страной. я смогу включить инструкцию select, которую вы отправили сразу после моего подключения. Возможно, используя хранимую процедуру? Thanks – Mojatba

+0

Звучит здорово. Чтобы закрыть вопрос, пожалуйста, отметьте один из ответов, как принято. Спасибо. – zedfoxus

0

Вы можете использовать sum функцию и группировать результаты по region:

SELECT region, SUM(value) 
FROM  mytable 
GROUP BY region 
Смежные вопросы