Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Объясните про group by a, rollup(a,b)  [new]
StanChi
Member [заблокирован]

Откуда: отсюда не видать
Сообщений: 931
Объясните пожалуйста в простых словах - для чего нужна конструкция subj, что она даёт такого, чего нельзя добиться rollup и почему такая конструкция генерирует повторяющиеся записи (которые потом отсеивают с помощью group_id)?
Гуглил, нашёл много описаний _как_ писать, но нигде - _для чего_ использовать.
24 окт 10, 10:44    [9664519]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
Правда гуглил?
24 окт 10, 15:52    [9665146]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
StanChi,
24 окт 10, 17:20    [9665325]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
StanChi,

начиная с 9i - про сабж можно забыть нафик в пользу group by grouping sets
24 окт 10, 17:23    [9665335]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
StanChi
Member [заблокирован]

Откуда: отсюда не видать
Сообщений: 931
semenar
Правда гуглил?

Выпендривайся меньше, читай исходный вопрос больше, по буквам. Буквы знаешь?
24 окт 10, 22:16    [9666155]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
StanChi
Member [заблокирован]

Откуда: отсюда не видать
Сообщений: 931
orawish
StanChi,

начиная с 9i - про сабж можно забыть нафик в пользу group by grouping sets

Спасибо, это обнадёживает. Но grouping sets просто позволяет выкинуть всё кроме тоталс, с ним всё ясно, но вот это двойное группирование по одной и той же колонке смущает.
что вроде

select division_id, job_id, sum(salary)
from employees2
group by division_id, rollup(division_id, job_id)

Зачем это делают?
24 окт 10, 22:20    [9666167]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54395
StanChi,

а ты эту конструкцию где-то встретил и пытаешься понять, для чего?
или хочешь использовать в своих разработках?
24 окт 10, 23:20    [9666320]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
StanChi
Member [заблокирован]

Откуда: отсюда не видать
Сообщений: 931
andreymx
StanChi,

а ты эту конструкцию где-то встретил и пытаешься понять, для чего?
или хочешь использовать в своих разработках?

Всё гораздо хужее. Эта конструкция упоминается почти в любом материале по использованию advanced grouping, как пример для использования group_id(); например в книге Oracle Database 10g SQL
by Jason Price, я выше привел пример запроса оттуда, перед запросом сказано буквально следующее:

You can use a column multiple times in a GROUP BY clause, which can enable you to reorganize your data or report on different groupings of data. For example, the following query contains a GROUP BY clause that uses division_id twice, once to group by division_id and the second in a ROLLUP:
SELECT division_id, job_id, SUM(salary)
FROM employees2
GROUP BY division_id, ROLLUP(division_id, job_id);

А мне на днях интервью проходить, ну там хотят про advanced grouping услышать, вот я и штудирую.
Еще хотят про аналитич.функции, естественно.
Меня вообще анноят такие вопросы, за последние 5 лет не было бы ни одного интервью, на котором бы это не спрашивали, и не было ни одной работы, где это _действительно_ хоть раз бы использовалось.
25 окт 10, 01:30    [9666558]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
andv
Member

Откуда:
Сообщений: 50
StanChi,

Я так полагаю, что
SELECT division_id, job_id, SUM(salary) 
FROM employees2
GROUP BY division_id, ROLLUP(division_id, job_id);

- это вот, что

SELECT division_id, job_id, SUM(salary) 
FROM employees2
GROUP BY ROLLUP(division_id, job_id);

UNION ALL

SELECT division_id, NULL, SUM(salary) 
FROM employees2
GROUP BY division_id

А для чего использовать - сам решай.
25 окт 10, 22:28    [9673514]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
andv
Member

Откуда:
Сообщений: 50
Погорячился, еще без общего итога...
25 окт 10, 22:31    [9673521]     Ответить | Цитировать Сообщить модератору
 Re: Объясните про group by a, rollup(a,b)  [new]
StanChi
Member [заблокирован]

Откуда: отсюда не видать
Сообщений: 931
Прикольные у них тут интервью. Позиция была Oracle Developer, чел долго меня пытал о конфигурации raid-массива сервера. Я ведь еще и на швейной машинке могу...но причем здесь PL/SQL???
25 окт 10, 22:56    [9673619]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить