powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / задачи для Гуру SQL
22 сообщений из 47, страница 2 из 2
задачи для Гуру SQL
    #39457156
stek... Обещаю если пройду - вознагражу

Очень сомнительное обещание. Как насчет вознаградить заранее, а если получится - пришлю тебе решение.
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457161
Balbesco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL, спасибо.
Вечно я перемудрю :(

Ну и автору топика таки тож спасибо :)
Не он бы , прошло мимо

авторЭто одна из пяти базовых операций реляционной алгебры.
Читай статьи Iggy Fernandez, если интересует общее понимание:
Explaining the EXPLAIN PLAN
SQL Sucks
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457162
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stek...SY,



Исходная таблица следующая:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[SRC PLSQL]CUSTOMER	TRAN_DATE
-----------------------------------------
1		01.01.2013
2		05.01.2013
2		06.01.2013
2		07.01.2013
2		04.03.2013
2		21.02.2013
3		15.03.2013
3		16.01.2013
3		17.02.2013





извините, не понял как данную информацию можно применить к этой задачи?

Пардон, результирующая таблица должна быть такой:


CUSTOMER // TRAN_DATE
-----------------------------------------
1 // 01.01.2013
2 // 04.03.2013
2 // 21.02.2013
3 // 16.03.2013
3 // 17.02.2013


А как у тебя получиться 16.03.2013 если такой даты нет в таблице, надо выдумывать свои даты на основе хрустального шара?
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457164
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopleggа о фишке из 8 вопроса я не знал.Это называется projection. Простыми словами: вычисляются и выбираются только те колонки, которые необходимы.



в тоже время (хотя ххх не используется)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> ed
Wrote file afiedt.buf

  1* select * from dual where exists (select xxx from dual)
SQL> /
select * from dual where exists (select xxx from dual)
                                        *
ERROR at line 1:
ORA-00904: "XXX": invalid identifier



.....
stax
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457167
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..dbms_photoshopпропущено...
Это называется projection. Простыми словами: вычисляются и выбираются только те колонки, которые необходимы.



в тоже время (хотя ххх не используется)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> ed
Wrote file afiedt.buf

  1* select * from dual where exists (select xxx from dual)
SQL> /
select * from dual where exists (select xxx from dual)
                                        *
ERROR at line 1:
ORA-00904: "XXX": invalid identifier



.....
stax
насколько понимаю тут ошибка возникает еще на этапе синтаксического разбора.. в то время как 1/0 ругается ( иле не ругается) во время выполнения запроса.
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457168
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..dbms_photoshopпропущено...
Это называется projection. Простыми словами: вычисляются и выбираются только те колонки, которые необходимы.



в тоже время (хотя ххх не используется)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> ed
Wrote file afiedt.buf

  1* select * from dual where exists (select xxx from dual)
SQL> /
select * from dual where exists (select xxx from dual)
                                        *
ERROR at line 1:
ORA-00904: "XXX": invalid identifier



.....
stax
Это совершенно другое, тут не проходит проверка наличия объектов и прав на них.
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457574
Kaban77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет!

меня вот заинтересовала задача №5.
использую dense_rank() и join, но в результате не выводятся строки, где в столбце next_change пустая строка.
подскажите, пожалуйста, правильный алгоритм.

Спасибо!
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457588
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kaban77,

Это ты stek... ?

Попробуй Lead
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457647
ora601
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У постановщиков тоже не все гладко, btw.

5) nearest для 22.08.2013 = 21.08.2013

24.08... = lead как уже сказали.
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457740
Plohoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На 7 задачу (не ради оболтуса, а для себя)


with tab_1 as (
select 1 customer, '01.01.2013' tran_date from dual union all
select 2 customer, '05.01.2013' tran_date from dual union all
select 2 customer, '06.01.2013' tran_date from dual union all
select 2 customer, '07.01.2013' tran_date from dual union all
select 2 customer, '04.03.2013' tran_date from dual union all
select 2 customer, '21.02.2013' tran_date from dual union all
select 3 customer, '15.03.2013' tran_date from dual union all
select 3 customer, '16.01.2013' tran_date from dual union all
select 3 customer, '17.02.2013' tran_date from dual)

select customer
, tran_date
from (
select customer
, tran_date
, lead(tran_date) over (partition by customer order by customer, tran_date)
, row_number() over (partition by customer order by customer, tran_date desc) p_num
from tab_1)
where p_num in (1, 2)
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457809
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlohoyНа 7 задачу (не ради оболтуса, а для себя)


with tab_1 as (
select 1 customer, '01.01.2013' tran_date from dual union all
select 2 customer, '05.01.2013' tran_date from dual union all
select 2 customer, '06.01.2013' tran_date from dual union all
select 2 customer, '07.01.2013' tran_date from dual union all
select 2 customer, '04.03.2013' tran_date from dual union all
select 2 customer, '21.02.2013' tran_date from dual union all
select 3 customer, '15.03.2013' tran_date from dual union all
select 3 customer, '16.01.2013' tran_date from dual union all
select 3 customer, '17.02.2013' tran_date from dual)

select customer
, tran_date
from (
select customer
, tran_date
, lead(tran_date) over (partition by customer order by customer, tran_date)
, row_number() over (partition by customer order by customer, tran_date desc) p_num
from tab_1)
where p_num in (1, 2)

тут есть небольшая ошибочка =)
Код: plsql
1.
 select 1 customer, '01.01.2013' tran_date from dual union all


для тестовой даты так писать нельзя потому что это '01.01.2013' tran_date - varchar и при сортировке будет сортировать не как дату а как строку т.е. 10 января будет после 01 февраля. т.е. надо прописывать
Код: plsql
1.
 select 1 customer, to_date('01.01.2013','dd.mm.yyyy') tran_date from dual union all



2. Если делаешь через row_number() тебе не нужен lead и сортировать по полю которое одно в partition by не вижу смысла
Код: plsql
1.
2.
3.
4.
5.
6.
select customer , tran_date
  from ( select customer
              , tran_date
              , row_number() over (partition by customer order by tran_date desc) p_num
           from tab_1)
 where p_num in (1, 2)



3. Если делаешь через lead - то так
Код: plsql
1.
2.
3.
4.
5.
6.
select customer , tran_date
  from ( select customer
              , tran_date
              , Lead(to_char(tran_date,'ddd'),2,'A') over (partition by customer order by tran_date) p_num
           from tab_1)
 where p_num = 'A' 
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457827
rekrabbe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
5-я:
Код: 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.
with t(ikey, position, change_date) as
(
  select 1, 1, '04.05.2017 10:59:09' from dual
  union all
  select 2, 1, '05.05.2017 10:59:09' from dual
  union all
  select 3, 1, '06.05.2017 10:59:09' from dual
  union all
  select 4, 1, '08.05.2017 10:59:09' from dual
  union all
  select 5, 2, '04.05.2017 10:59:09' from dual
  union all
  select 6, 3, '05.05.2017 10:59:09' from dual
  union all
  select 7, 3, '06.05.2017 10:59:09' from dual
  union all
  select 8, 3, '09.05.2017 10:59:09' from dual
  union all
  select 9, 3, '07.05.2017 10:59:09' from dual
  union all
  select 10, 1, '07.05.2017 10:59:09' from dual
)
select ikey,
  position,
  change_date,
  lead(change_date, 1) over(partition by position order by change_date) as next_change_date
from t
order by ikey
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457855
rekrabbe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
7-я
Код: 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.
with t(customer, tran_date) as
(
  select 1, to_date('01.01.2013', 'dd.mm.yyyy') from dual
  union all
  select 2, to_date('05.01.2013', 'dd.mm.yyyy') from dual
  union all
  select 2, to_date('06.01.2013', 'dd.mm.yyyy') from dual
  union all
  select 2, to_date('07.01.2013', 'dd.mm.yyyy') from dual
  union all
  select 2, to_date('04.03.2013', 'dd.mm.yyyy') from dual
  union all
  select 2, to_date('21.02.2013', 'dd.mm.yyyy') from dual
  union all
  select 3, to_date('15.03.2013', 'dd.mm.yyyy') from dual
  union all
  select 3, to_date('16.01.2013', 'dd.mm.yyyy') from dual
  union all
  select 3, to_date('17.02.2013', 'dd.mm.yyyy') from dual
)
select *
from
(
  select customer,
    tran_date,
    row_number() over(partition by customer order by tran_date desc) as rn
  from t
)
where rn in (1, 2)
order by customer, tran_date
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457863
rekrabbe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно, где такие собеседования проходят, где дают запросы решать на дому и на что рассчитывает автор, если его возьмут?
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457874
Kaban77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXLKaban77,

Это ты stek... ?


Не, к счастью не он))

MaximaXXLПопробуй Lead

Спасибо!
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457878
Kaban77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rekrabbe5-я:
Код: 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.
with t(ikey, position, change_date) as
(
  select 1, 1, '04.05.2017 10:59:09' from dual
  union all
  select 2, 1, '05.05.2017 10:59:09' from dual
  union all
  select 3, 1, '06.05.2017 10:59:09' from dual
  union all
  select 4, 1, '08.05.2017 10:59:09' from dual
  union all
  select 5, 2, '04.05.2017 10:59:09' from dual
  union all
  select 6, 3, '05.05.2017 10:59:09' from dual
  union all
  select 7, 3, '06.05.2017 10:59:09' from dual
  union all
  select 8, 3, '09.05.2017 10:59:09' from dual
  union all
  select 9, 3, '07.05.2017 10:59:09' from dual
  union all
  select 10, 1, '07.05.2017 10:59:09' from dual
)
select ikey,
  position,
  change_date,
  lead(change_date, 1) over(partition by position order by change_date) as next_change_date
from t
order by ikey



Небольшая поправка:

Код: plsql
1.
order by position, change_date
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457930
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rekrabbeИнтересно, где такие собеседования проходят, где дают запросы решать на дому и на что рассчитывает автор, если его возьмут?


ето 0 уровень, до собеседования

напр
http://www.banksoft.com.ua/index.php?id=60

.....
stax
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457951
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rekrabbeИнтересно, где такие собеседования проходят, где дают запросы решать на дому
Это само по себе нормально. Ведь никто же не собирается брать именно по результатам этих решений :) Просто возможность человеку заранее понять, соответствует ли он вакансии, и показать свою дурь. А на собеседовании сам ли он решал - станет ясно через две минуты.
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39457988
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerrekrabbeИнтересно, где такие собеседования проходят, где дают запросы решать на дому
Это само по себе нормально. Ведь никто же не собирается брать именно по результатам этих решений :) Просто возможность человеку заранее понять, соответствует ли он вакансии, и показать свою дурь. А на собеседовании сам ли он решал - станет ясно через две минуты.Отдельно радуют формулировки

we need a new table
...
you need to get
...
result must be

Чуствуется тонкое понимание делового английского.
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39458932
Landgraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На 6 задачку, вот так например:
Код: plsql
1.
2.
3.
4.
select Trim((Last_Day(ADD_MONTHS(sysdate,-1))+1 ) + level - 1)
  from dual
      connect by 
              level <=( LAST_DAY(sysdate) - (Last_Day(ADD_MONTHS(sysdate,-1))+1 )) + 1 
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39458968
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landgraf,

А прочитать всю тему, не?
20500628

там меньше текста =)
...
Рейтинг: 0 / 0
задачи для Гуру SQL
    #39458977
Landgraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLLandgraf,

А прочитать всю тему, не?
20500628

там меньше текста =)

Ага, я уже после увидел! :-)
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / задачи для Гуру SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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