Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача SQL / 25 сообщений из 40, страница 1 из 2
30.07.2019, 11:52
    #39842894
vasiliy89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Всем привет
помогите написать запрос , сломал голову уже(

во вложении задание , не могу вывести "Кол-во проданных товаров оффлайн", "Сумма проданных товаров оффлайн","Кол-во отмененных товаров онлайн" , "Сумма отмененных товаров онлайн"

Решил делать отдельно каждую таблицу ,потом совместить , но не получается вывести вышеперечисленные поля:

select
t1.id_delivery as "№ поставки",
count(distinct t1.id_agent) as "Кол-во агентов оффлайн" ,
count (t1.is_agent) as "Кол-во отгруже тов оффлай" ,
count (t1.is_util) as "Кол-во утилиз товаров оффлайн"

from tab2 t1
group by t1.id_delivery
;

select
count(distinct t3.id_agent) as "Кол-во агентов онлайн" ,
count(t3.id_type) as "Кол-во проданных тов онлайн",
sum(t3.amount) as "Сумма проданных товаров онлайн"
--count( t4.id_type) as "Кол-во отмен товаров онлайн"

from tab3 t3 /*, tab3 t4*/
where /*t3.id_delivery=t4.id_delivery
and*/ t3.id_type = 1
--and t4.id_type = 2 --(select count(tt.id_type) from tab3 tt where tt.id_type = 2 )
--group by t3.id_delivery
...
Рейтинг: 0 / 0
30.07.2019, 12:06
    #39842903
Anton_Demin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
vasiliy89,

ни кто не хочет погружаться в твои задачи, у всех свои дела.
Сделай нормально постановку, вот пример, как надо

https://www.sql.ru/forum/1313180/pyatnichnyy-zaprosik
...
Рейтинг: 0 / 0
30.07.2019, 12:13
    #39842909
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Мне было не жалко 10 минут, заготовку сделал.
Дальше сами поработайте.

Код: 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.
with t1(ID_delivery, ID_agent, IS_agent, IS_util, Amount, ID_trade) as (
select 1, 11, 'y', 'y', null, 11 from dual union all
select 1, 11, 'y', null, 100, 12 from dual union all
select 1, 12, 'y', null, 100, 13 from dual union all
select 1, 12, 'y', 'y', null, 14 from dual union all
select 2, 12, 'y', null, 100, 11 from dual union all
select 2, 12, null, null, null, 12 from dual union all
select 2, 13, 'y', null, 100, 13 from dual union all
select 2, 14, 'y', null, 100, 14 from dual union all
select 2, 11, 'y', 'y', null, 15 from dual
), t2(ID_delivery, ID_agent, ID_type, Amount, ID_trade) as (
select 1, 52,  1, 100, 1 from dual union all
select 1, 52,  2, 100, 1 from dual union all
select 1, 53,  1, 100, 2 from dual union all
select 1, 58,  1, 100, 3 from dual union all
select 1, 58,  1, 100, 4 from dual union all
select 1, 900, 1, 100, 5 from dual union all
select 1, 900, 2, 100, 5 from dual union all
select 2, 53,  1, 100, 1 from dual union all
select 2, 60,  1, 100, 2 from dual
)
select id_delivery, id_agent, amount, count(is_util) over(partition by tabl) cnt_util
  from (
select 't1' tabl, id_delivery, id_agent, nvl(amount, 0) amount, is_util from t1
 union all
select 't2' tabl, id_delivery, id_agent, amount, null is_util from t2
       )

...
Рейтинг: 0 / 0
30.07.2019, 12:32
    #39842933
Anton_Demin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
dmdmdm,

да я не из вредности ))

«Правильно заданный вопрос – половина ответа»(с)
https://habr.com/ru/post/81046/
...
Рейтинг: 0 / 0
30.07.2019, 13:07
    #39842957
slow brain
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
with tab2(ID_delivery,ID_agent,IS_agent,IS_util,Amount,ID_trade) as 
(select 1,11,'y','y',null,11 from dual union all
select 1,11,'y','',100,12 from dual union all
select 1,12,'y','',100,13 from dual union all
select 1,12,'y','y',null,14 from dual union all
select 2,12,'y','',100,11 from dual union all
select 2,12,'','',null,12 from dual union all
select 2,13,'y','',100,13 from dual union all
select 2,14,'y','',100,14 from dual union all
select 2,11,'y','y',null,15 from dual )
, tab3( ID_delivery, ID_agent, ID_type, Amount,ID_trade) as 
(select 1, 52,1,100,1 from dual union all
select 1, 52,2,100,1 from dual union all
select 1, 53,1,100,2 from dual union all
select 1, 58,1,100,3 from dual union all
select 1, 58,1,100,4 from dual union all
select 1, 900,1,100,5 from dual union all
select 1, 900,2,100,5 from dual union all
select 2, 53,1,100,1 from dual union all
select 2, 60,1,100,2 from dual )
    , tab2_gr as (
    select ID_delivery
        , count(distinct ID_agent) count_a
        , count(distinct case when is_agent = 'y' then ID_trade end) count_ship
        , count(distinct case when IS_util = 'y' then ID_trade end) count_util
        , count(distinct case when is_agent = 'y' and IS_util is null  then ID_trade end) count_sell
        , sum(case when is_agent = 'y' and IS_util is null  then Amount else 0 end) amount_sell
      from tab2 
     group by ID_delivery)
    , tab3_gr as (
    select id_delivery
         , sum(count_a) count_a
         , sum(sign_sell) count_sell
         , sum(sum_sell) sum_sell
         , sum(count_canc) count_canc
         , sum(sum_canc) sum_canc
      from (select id_delivery, id_trade
                 , count(distinct ID_agent) count_a
                 , sum( case ID_type when 1 then 1 when 2 then -1 end ) sign_sell
                 , sum( case ID_type when 1 then 1 when 2 then -1 end * Amount) sum_sell
                 , count(distinct case when ID_type = 2 then ID_trade end) count_canc
                 , sum( case when ID_type = 2 then Amount else 0 end) sum_canc
              from tab3 group by id_delivery, id_trade) group by id_delivery
      )
select case when grouping (tab2.id_delivery) = 1 then 'Итого' else to_char(tab2.id_delivery) end id_delivery
     , sum(tab2.count_a) count_a_off
     , sum(tab2.count_ship) count_ship_off
     , sum(tab2.count_util) count_util_off
     , sum(tab2.count_sell) count_sell_off
     , sum(tab2.amount_sell) amount_sell_off
     , sum(tab3.count_a) count_a_on
     , sum(tab3.count_sell) count_sell_on
     , sum(tab3.sum_sell) sum_sell_on
     , sum(tab3.count_canc) count_canc_on
     , sum(tab3.sum_canc) sum_canc_on
  from tab2_gr tab2
     , tab3_gr tab3
 where tab2.id_delivery = tab3.id_delivery
  group by rollup ( tab2.id_delivery); 



Передайте им, что они поступают не очень этично, отзывая офферы.
...
Рейтинг: 0 / 0
30.07.2019, 13:27
    #39842967
vasiliy89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Всем спасибо!!!!
...
Рейтинг: 0 / 0
30.07.2019, 13:28
    #39842968
vasiliy89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
slow brain, кому?)
...
Рейтинг: 0 / 0
30.07.2019, 13:30
    #39842969
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
https://www.sql.ru/forum/1288307/vakansiya-otchetnost-moskva
Вот это они, как раз это задание и высылали.

Вот мой вариант решения:

Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
with q (ID_delivery,ID_agent, IS_agent, IS_util, Amount,ID_trade) as (
select 1, 11, 'Y', 'Y', null, 11 from dual union all
select 1, 11, 'Y', null, 100, 12 from dual union all
select 1, 12, 'Y', null, 100, 13 from dual union all
select 1, 12, 'Y', 'Y', null, 14 from dual union all
select 2, 12, 'Y', null, 100, 11 from dual union all
select 2, 12, null, null, null, 12 from dual union all
select 2, 13, 'Y', null, 100, 13 from dual union all
select 2, 14, 'Y', null, 100, 14 from dual union all
select 2, 11, 'Y', 'Y', null, 15 from dual
)
, q1(ID_delivery, ID_agent, ID_type, Amount, ID_trade) as (
select 1, 52, 1, 100, 1 from dual union all
select 1, 52, 2, 100, 1 from dual union all
select 1, 53, 1, 100, 2 from dual union all
select 1, 58, 1, 100, 3 from dual union all
select 1, 58, 1, 100, 4 from dual union all
select 1, 900, 1, 100, 5 from dual union all
select 1, 900, 2, 100, 5 from dual union all
select 2, 53, 1, 100, 1 from dual union all
select 2, 60, 1, 100, 2 from dual)
select nvl(to_char(z1.id_delivery),'ИТОГО:')
, sum(r1)
, sum(r2)
, sum(r3)
, sum(r4)
, sum(r5)
, sum(r6)
, sum(r7)
, sum(r8)
, sum(r9)
, sum(r10)
 from 
(select q.id_delivery
, count(distinct q.id_agent) as r1
, sum(case when q.is_agent = 'Y' then 1 else 0 end) as r2
, sum(case when q.is_util = 'Y' then 1 else 0 end) as r3
, count(distinct q.id_trade) as r4
, sum(q.amount) as r5
from q
group by rollup(q.id_delivery)) z1
join
(select q1.id_delivery
, count(distinct q1.id_agent) as r6
, sum(case when q1.ID_type = 1 then 1 else 0 end) as r7
, sum(case when q1.ID_type = 1 then q1.amount else 0 end) as r8
, sum(case when q1.ID_type = 2 then 1 else 0 end) as r9
, sum(case when q1.ID_type = 2 then q1.amount else 0 end) as r10
from q1
group by q1.id_delivery) z2 on z1.id_delivery = z2.id_delivery
group by rollup(z1.id_delivery)



автор>>Решение на проходной балл, есть ошибки в результатах.
Так же мне скинули решение, которое они считают близким к идеальному.

Под ошибками подразумевалось то, что я не сделал роллап по дистинкт каунту ;D
...
Рейтинг: 0 / 0
30.07.2019, 13:46
    #39842975
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Когда пришлют ответом своё решение, скажи что в итоговой строке они выводят.
Интересно, исправились они или нет.
...
Рейтинг: 0 / 0
30.07.2019, 14:01
    #39842982
slow brain
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
vasiliy89, вот им. Они и мне это задание высылали.
Dshedoo https://www.sql.ru/forum/1288307/vakansiya-otchetnost-moskva
Вот это они, как раз это задание и высылали.
...
Рейтинг: 0 / 0
07.08.2019, 14:31
    #39846375
iOracleDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
slow brain,

Предыдущий кандидат целый год продержался))
...
Рейтинг: 0 / 0
07.08.2019, 15:07
    #39846403
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
slow brainПередайте им, что они поступают не очень этично, отзывая офферы.
зато правильно
Код: sql
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.
40.
with tab2(ID_delivery,ID_agent,IS_agent,IS_util,Amount,ID_trade) as (
	select 1,11,'y','y',null,11 from dual union all
	select 1,11,'y','',100,12 from dual union all
	select 1,12,'y','',100,13 from dual union all
	select 1,12,'y','y',null,14 from dual union all
	select 2,12,'y','',100,11 from dual union all
	select 2,12,'','',null,12 from dual union all
	select 2,13,'y','',100,13 from dual union all
	select 2,14,'y','',100,14 from dual union all
	select 2,11,'y','y',null,15 from dual 
), tab3( ID_delivery, ID_agent, ID_type, Amount,ID_trade) as (
	select 1, 52,1,100,1 from dual union all
	select 1, 52,2,100,1 from dual union all
	select 1, 53,1,100,2 from dual union all
	select 1, 58,1,100,3 from dual union all
	select 1, 58,1,100,4 from dual union all
	select 1, 900,1,100,5 from dual union all
	select 1, 900,2,100,5 from dual union all
	select 2, 53,1,100,1 from dual union all
	select 2, 60,1,100,2 from dual 
)
, sales(id_delivery, ID_agent_offline, IS_agent,IS_util,Amount_offline, ID_trade_offline, id_agent_online, id_type, amount_online, id_trade_online) as (
	select id_delivery, ID_agent, IS_agent,IS_util,Amount, ID_trade, null, null, null, null from tab2 
	union all
	select id_delivery, null, null, null, null, null,  ID_agent, ID_type, Amount,ID_trade from tab3
)
select 
	id_delivery, 
	count(distinct id_agent_offline) count_agent_offline, 
	count(distinct decode(is_agent, 'y', id_trade_offline)) count_ship,
	count(distinct decode(is_util, 'y', id_trade_offline)) count_util,
	count(distinct case when is_agent = 'y' and IS_util is null then ID_trade_offline end) count_sell,
	sum(case when is_agent = 'y' and IS_util is null then Amount_offline end) amount_sell,
	count(distinct ID_agent_online) count_agent_online,
	sum(decode(id_type, 1, 1, 2, -1)) count_sell,
	sum(decode(id_type, 1, 1, 2, -1) * Amount_online) sum_sell,
	count(decode(id_type, 2, id_trade_online)) count_canc,
	sum(decode(id_type, 2, amount_online)) sum_canc
from sales
group by rollup(id_delivery);


...
Рейтинг: 0 / 0
07.08.2019, 15:54
    #39846453
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
кит северных морей
count(distinct id_agent_offline) count_agent_offline,
count(distinct decode(is_agent, 'y', id_trade_offline)) count_ship,
count(distinct decode(is_util, 'y', id_trade_offline)) count_util,
count(distinct case when is_agent = 'y' and IS_util is null then ID_trade_offline end) count_sell,
count(distinct ID_agent_online) count_agent_online,
group by rollup(id_delivery);


Вот о чём я и говорил.
Роллап по дистинкту даст в результате число от max до sum вышестоящих данных, что имеет практическую пользу равную нулю.
...
Рейтинг: 0 / 0
07.08.2019, 16:13
    #39846474
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Dshedoo,

имеет это практическую пользу, или нет, но неправильный роллап - это только первая ошибка в вашем запросе.
вторая - то что вы не сделали FULL JOIN (раз уж вы вообще взялись делать джоин).
...
Рейтинг: 0 / 0
07.08.2019, 16:32
    #39846491
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
кит северных морейDshedoo,

имеет это практическую пользу, или нет, но неправильный роллап - это только первая ошибка в вашем запросе.
вторая - то что вы не сделали FULL JOIN (раз уж вы вообще взялись делать джоин).

Итоговая строка - это всё таки подведение итогов вышестоящих данных, а не коня в вакууме.
Фулл джоин излишен, исходя из задания.
З.Ы. в "правильном" решении, там тоже не юзается фулл.
...
Рейтинг: 0 / 0
07.08.2019, 16:49
    #39846505
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
DshedooИтоговая строка - это всё таки подведение итогов вышестоящих данных, а не коня в вакууме.
все верно. я посчитал общее число агентов, совершивших офлайн-продажи, и общее число фактов офлайн-продаж. что именно посчитали вы?
...
Рейтинг: 0 / 0
07.08.2019, 16:54
    #39846509
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
DshedooЗ.Ы. в "правильном" решении, там тоже не юзается фулл. допустим. но вы, как опытный специалист, рассуждающий о практической пользе, могли бы подумать: "хмм, мое решение предполагает, что в каждой поставке должно быть как минимум по одной онлайн и офлайн продаже, иначе эта поставка просто не попадет в отчёт... что-то тут не так"
...
Рейтинг: 0 / 0
07.08.2019, 18:24
    #39846567
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
кит северных морейDshedooИтоговая строка - это всё таки подведение итогов вышестоящих данных, а не коня в вакууме.
все верно. я посчитал общее число агентов, совершивших офлайн-продажи, и общее число фактов офлайн-продаж. что именно посчитали вы?

А я вывел итоговую строку.
Итоговая строка - это результат агрегирования вышестоящих данных.
У вас есть набор данных, которые вы агрегируете, а потом делаете агрегацию агрегированных данных и получаете итоговую строку, так?
Роллап агрегирует изначальные данные, присваивая полю нулл.
И это прокатывает во всех случаях, за исключением агрегации distincta.

кит северных морейDshedooЗ.Ы. в "правильном" решении, там тоже не юзается фулл. допустим. но вы, как опытный специалист, рассуждающий о практической пользе, могли бы подумать: "хмм, мое решение предполагает, что в каждой поставке должно быть как минимум по одной онлайн и офлайн продаже, иначе эта поставка просто не попадет в отчёт... что-то тут не так"

По той же причине, почему вы не написали where id_agent in (1,2).
Ведь ваше же решение предполагает выводить все данные из таблиц, а просят вернуть только 1 и 2 id_agent.
Потому что это просто излишне, исходя из задания.
З.Ы. хватит уже высасывать из пальца, ещё скажите что на нулл надо было проверять каждое поле.
...
Рейтинг: 0 / 0
07.08.2019, 18:51
    #39846592
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Dshedooкит северных морейя посчитал общее число агентов, совершивших офлайн-продажи, и общее число фактов офлайн-продаж. что именно посчитали вы?
А я вывел итоговую строку.
Итоговая строка - это результат агрегирования вышестоящих данных.
Гм... "И ты прав" (с)
Однако, судя по

Dshedooавтор>>Решение на проходной балл, есть ошибки в результатах.
Так же мне скинули решение, которое они считают близким к идеальному.
Под ошибками подразумевалось то, что я не сделал роллап по дистинкт каунту ;D

постановщик имел ввиду агрегацию, отличную от суммирования строк отчета.
В самом деле, пусть зарегистрирована сотня агентов, но реально работает только один.
Должен ли результат в итоге по полю "количество уникальных агентов" выдать "100500" как резульлтат суммирования единички из всех строк отчета?
А что эта цифра будет означать в практическом плане?
В конкретной постановке нарвал (не не белуха же :) выглядит заметно более правым.
...
Рейтинг: 0 / 0
07.08.2019, 18:52
    #39846595
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
DshedooУ вас есть набор данных, которые вы агрегируете, а потом делаете агрегацию агрегированных данных и получаете итоговую строку, так?
нет, не так. group by rollup(column) - это, грубо говоря,
Код: plsql
1.
2.
3.
select column, avg(value) from table group by column 
union all
select null, avg(value) from table


разницу между написанным выше и avg(avg(value)) надо объяснять?

DshedooПотому что это просто излишне, исходя из задания.
З.Ы. хватит уже высасывать из пальца, ещё скажите что на нулл надо было проверять каждое поле.
да ради бога. повторяйте себе это почаще. это вы не можете тестовое задание на сотку в месяц решить, не я.
...
Рейтинг: 0 / 0
08.08.2019, 08:45
    #39846760
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
andrey_anonymousДолжен ли результат в итоге по полю "количество уникальных агентов" выдать "100500" как резульлтат суммирования единички из всех строк отчета?

Именно так, потому что мы выводим "ИТОГО" для данных, а не общее кол-во уникальных агентов.

А есть у нас в будут в продажах сотни строк с кол-вом 1-5, а в "итого" выводится 94, то это правильнее?
Или пару миллионов строк, с "2" в итого.

Я к тому, что при таком подходе данные в итоговой строке никак не связаны с вышестоящими данными, поэтому выводить их как "ИТОГО" некорректно.
...
Рейтинг: 0 / 0
08.08.2019, 09:43
    #39846783
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Dshedoo,

вы итого по средним величинам как считать будете? как сумму средних? или как среднее от средних? какой у полученного результата будет практический смысл, кроме того, что он "итого для вышестоящих данных"?
...
Рейтинг: 0 / 0
08.08.2019, 10:00
    #39846792
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
кит северных морейDshedoo,

вы итого по средним величинам как считать будете? как сумму средних? или как среднее от средних? какой у полученного результата будет практический смысл, кроме того, что он "итого для вышестоящих данных"?

Точно так же, как считает avg() - соотношение суммы к кол-ву.
Только если мы берём не агрегированные данные, то там 1 строка соответствует 1 кол-ву, а в агрегированных данных уже 1 строка не соответствует 1 кол-ву.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with q(id,amt) as (
select 1, 100 from dual union all
select 1, 100 from dual union all
select 2, 100 from dual union all
select 2, 200 from dual union all
select 3, 100 from dual)

, w as (select id, sum(amt) as z, count(*) as x, sum(amt)/count(*) as c, avg(amt) as v from q group by rollup(id))

select * from w
union all
select null, sum(z), sum(x), sum(z)/sum(x), avg(v) from w where id is not null
...
Рейтинг: 0 / 0
08.08.2019, 11:19
    #39846843
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Dshedooandrey_anonymousДолжен ли результат в итоге по полю "количество уникальных агентов" выдать "100500" как резульлтат суммирования единички из всех строк отчета?

Именно так, потому что мы выводим "ИТОГО" для данных, а не общее кол-во уникальных агентов.
Ну и напрасно.
Потому что:
- строка "ИГОГО" не обязана быть СУММОЙ строк отчета. Да, чаще всего именно так. Но не всегда.
- любая цифра в отчете должна иметь практический смысл, заявлянный в шапке отчета.
В частности, в варианте
период количество активных агентов количество операций...май 10 800июнь 8 300...по году 11 1100
число 11 будет иметь реальный практический смысл в отличие от 18
...
Рейтинг: 0 / 0
08.08.2019, 11:24
    #39846849
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача SQL
Dshedoo
Код: plsql
1.
sum(z)/sum(x)


Ну вот видите, и в Вашем варианте среднее по отчету - не среднее по строкам отчета, а средневзвешенное, т.е. соответствует avg(вся выборка) и не может быть проверено на основе данных отчета, если в выходной форме отсутствует "x".
Таким образом Вы дезавуировали собственное утверждение.
Полагаю, на этом увлекательную дискуссию можно завершать.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача SQL / 25 сообщений из 40, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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