Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1
  • 2
  • 3

ТЕМА: Добавить поле "Итого за год", отображающее выручку по магазинам за год

Добавить поле "Итого за год", отображающее выручку по магазинам за год 19 дек 2011 05:06 #3845

  • Okey
  • Okey аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 55
  • Спасибо получено: 0
Запрос, который возвращается выручку по магазинам за месяц
SELECT st.name AS магазин,
       to_char(sals.date_when_sold, 'MM-YY') AS месяц, SUM(sals.kolvo * gds.price) AS выручка
FROM stores st
JOIN departmentsstores dps ON (dps.id_store = st.id_store)
JOIN goodsinstores gds ON (gds.id_department = dps.id_department)
JOIN goods g ON (g.id_good = gds.id_good)
JOIN sales sals ON (sals.id_good = g.id_good)
GROUP BY st.name, to_char(sals.date_when_sold, 'MM-YY')
ORDER BY to_char(sals.date_when_sold, 'MM-YY'), st.name;
Не получается сделать через Union

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Добавить поле "Итого за год", отображающее выручку по магазинам за год 19 дек 2011 05:07 #3846

  • Super
  • Super аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 58
  • Спасибо получено: 0
rollup grouping sets или with t as month -> t union all t group by year

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Добавить поле "Итого за год", отображающее выручку по магазинам за год 19 дек 2011 05:08 #3847

  • Okey
  • Okey аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 55
  • Спасибо получено: 0

Super пишет: rollup grouping sets или with t as month -> t union all t group by year

У меня вот так не работает
SELECT st.name AS магазин,
       to_char(sals.date_when_sold, 'MM-YY') AS месяц, SUM(sals.kolvo * gds.price) AS выручка
FROM stores st
JOIN departmentsstores dps ON (dps.id_store = st.id_store)
JOIN goodsinstores gds ON (gds.id_department = dps.id_department)
JOIN goods g ON (g.id_good = gds.id_good)
JOIN sales sals ON (sals.id_good = g.id_good)
GROUP BY st.name, to_char(sals.date_when_sold, 'MM-YY')
ORDER BY to_char(sals.date_when_sold, 'MM-YY'), st.name
UNION 
SELECT ALL FROM stores
JOIN departmentsstores ON (departmentsstores.id_store = stores.id_store)
JOIN goodsinstores ON (goodsinstores.id_department = departmentsstores.id_department)
JOIN goods ON (goods.id_good = goodsinstores.id_good)
JOIN sales ON (sales.id_good = goods.id_good)
GROUP BY stores.name;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Добавить поле "Итого за год", отображающее выручку по магазинам за год 19 дек 2011 05:08 #3848

  • Okey
  • Okey аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 55
  • Спасибо получено: 0
нет поля year,я не могу group by year

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Добавить поле "Итого за год", отображающее выручку по магазинам за год 19 дек 2011 05:08 #3849

select st.name, trunc(sals.date_when_sold, 'year'), trunc(sals.date_when_sold, 'month'), sum(...)
....
group by st.name, trunc(sals.date_when_sold, 'year'), rollup(trunc(sals.date_when_sold, 'month'))

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Добавить поле "Итого за год", отображающее выручку по магазинам за год 19 дек 2011 05:09 #3850

  • Okey
  • Okey аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 55
  • Спасибо получено: 0
это два разных способа?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3