Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Итог отдельной строкой по итоговому запросу. / 8 сообщений из 8, страница 1 из 1
24.09.2018, 15:01
    #39707095
iv_roman_vl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог отдельной строкой по итоговому запросу.
Всем привет!

есть запрос:
Код: plsql
1.
select name, money from (/*тут много много кода)*/) t1;



мне надо получить результат следующего вида:

с1 | c2
Итог | сумма по столбцу money, т.е. 600
pet | 100
ann | 200
ben | 300
...
Рейтинг: 0 / 0
24.09.2018, 15:04
    #39707099
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог отдельной строкой по итоговому запросу.
select 0 as ord, name, money from t1
union all
select 1 as ord, "Итого" as name, sum(money) from t1
order by ord asc
...
Рейтинг: 0 / 0
24.09.2018, 15:05
    #39707102
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог отдельной строкой по итоговому запросу.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
with q(name, money) as (select 'pet', 100 from dual union all
select 'ann', 200 from dual union all
select 'ben', 300 from dual)

select nvl(name,'Итого'), sum(money) from q 
group by rollup(name)
order by name nulls first
...
Рейтинг: 0 / 0
24.09.2018, 15:24
    #39707118
iv_roman_vl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог отдельной строкой по итоговому запросу.
Leonid Kudryavtsevselect 0 as ord, name, money from t1
union all
select 1 as ord, "Итого" as name, sum(money) from t1
order by ord asc

Это работает только к физической таблице. t1 - это результат запроса.
...
Рейтинг: 0 / 0
24.09.2018, 15:31
    #39707121
iv_roman_vl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог отдельной строкой по итоговому запросу.
Dshedoo
Код: plsql
1.
2.
3.
4.
5.
6.
7.
with q(name, money) as (select 'pet', 100 from dual union all
select 'ann', 200 from dual union all
select 'ben', 300 from dual)

select nvl(name,'Итого'), sum(money) from q 
group by rollup(name)
order by name nulls first



Все хорошо Но мне также надо вывести и департамент у сотрудника. И тогда все ломается.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
with q(name, dep,  money) as (select 'pet', 3, 100 from dual union all
select 'ann', 4, 200 from dual union all
select 'ben', 5, 300 from dual)

select nvl(name,'Итого'), dep, sum(money) from q 
group by rollup(name, dep)
order by name nulls first;
...
Рейтинг: 0 / 0
24.09.2018, 15:42
    #39707137
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог отдельной строкой по итоговому запросу.
iv_roman_vl
Все хорошо Но мне также надо вывести и департамент у сотрудника. И тогда все ломается.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
select  ename,
        case grouping(ename)
          when 1 then null
          else max(deptno)
        end deptno,
        sum(sal) sal
  from  emp
  group by grouping sets((),(ename,empno))
  order by grouping(ename) desc,
           ename
/

ENAME          DEPTNO        SAL
---------- ---------- ----------
                           29025
ADAMS              20       1100
ALLEN              30       1600
BLAKE              30       2850
CLARK              10       2450
FORD               20       3000
JAMES              30        950
JONES              20       2975
KING               10       5000
MARTIN             30       1250
MILLER             10       1300

ENAME          DEPTNO        SAL
---------- ---------- ----------
SCOTT              20       3000
SMITH              20        800
TURNER             30       1500
WARD               30       1250

15 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
24.09.2018, 15:48
    #39707142
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог отдельной строкой по итоговому запросу.
Или:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
select  case grouping(empno)
          when 1 then 'Total'
          else max(ename)
        end ename,
        case grouping(empno)
          when 1 then null
          else max(deptno)
        end deptno,
        sum(sal) sal
  from  emp
  group by grouping sets((),(empno))
  order by grouping(empno) desc,
           max(emp.ename)
/

ENAME          DEPTNO        SAL
---------- ---------- ----------
Total                      29025
ADAMS              20       1100
ALLEN              30       1600
BLAKE              30       2850
CLARK              10       2450
FORD               20       3000
JAMES              30        950
JONES              20       2975
KING               10       5000
MARTIN             30       1250
MILLER             10       1300

ENAME          DEPTNO        SAL
---------- ---------- ----------
SCOTT              20       3000
SMITH              20        800
TURNER             30       1500
WARD               30       1250

15 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
24.09.2018, 15:55
    #39707150
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог отдельной строкой по итоговому запросу.
Код: plsql
1.
group by rollup((dep, name))
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Итог отдельной строкой по итоговому запросу. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]