powered by simpleCommunicator - 2.0.17     © 2024 Programmizd 02
Map
Форумы / SQL [закрыт для гостей] / Задачи с собеседования для базоёбов.
25 сообщений из 364, страница 12 из 15
Задачи с собеседования для базоёбов.
    #143691
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Redd  10.09.2022, 11:15
[игнорируется]
9288  10.09.2022, 10:35
[игнорируется]
Если речь про собеседование и одного упоминания про аналитику и предыдущее/следующее значения (не помню точный синтаксис), недостаточно, то есть смысл подумать о вменяемости интервьюеров
А на работе без доступа к интернету как-то совсем грустно... Сразу в топку
Все не могу запомнить и в режиме писать на бумаге, это анриал. Рассказать тока смог бы. Ну мысль и немного накорябать..
Яваскрипт, пхп, Ява, котлин, скл и около, все это гавно держать в башке анриал, все перемешалось уже [:biggrin2]
"Поэтому саша и не женицуо" огм
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #143693
Redd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  10.09.2022, 12:06
[игнорируется]
Redd  10.09.2022, 11:15
[игнорируется]
9288  10.09.2022, 10:35
[игнорируется]
Если речь про собеседование и одного упоминания про аналитику и предыдущее/следующее значения (не помню точный синтаксис), недостаточно, то есть смысл подумать о вменяемости интервьюеров
А на работе без доступа к интернету как-то совсем грустно... Сразу в топку
Все не могу запомнить и в режиме писать на бумаге, это анриал. Рассказать тока смог бы. Ну мысль и немного накорябать..
Яваскрипт, пхп, Ява, котлин, скл и около, все это гавно держать в башке анриал, все перемешалось уже [:biggrin2]
"Поэтому саша и не женицуо" огм
Любишь меня[:lol]?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #143694
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
9288  10.09.2022, 10:35
[игнорируется]
Если речь про собеседование и одного упоминания про аналитику и предыдущее/следующее значения (не помню точный синтаксис), недостаточно, то есть смысл подумать о вменяемости интервьюеров
А на работе без доступа к интернету как-то совсем грустно... Сразу в топку
Лаги лиды надо знать а еще надо знать что у него три параметра на сама деле а не один. Мне весной дали 12 что ли задачек. Я на 6-ой устал сломался.
Это был ГПБ и я намертво забыл синтаксис партишин бая. Клин случилсо. Ну и согласились что надо кончать.

Аналитику с примерами на бумажке просят 9 из 10
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #143696
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Redd  10.09.2022, 01:32
[игнорируется]
Просто Трёп  10.09.2022, 00:51
[игнорируется]
Redd  10.09.2022, 00:32
[игнорируется]
Просто Трёп  10.09.2022, 00:30
[игнорируется]
Redd  10.09.2022, 00:28
[игнорируется]
...
Так это процедурное решение. А СКЛ - язык чтоб множествами оперировать.
Нет. Выше мой код, там нет никаких процедур, функций, ничего из этого и норм
Ты описываешь алгоритм, когда говоришь "от разрыва до разрыва", "запоминаешь". А СКЛ не для алгоритмов. Он для того, чтобы описать результат.
Главное чтоб понятно было)
Видели мы твое понятно на машкодб. Страница кода блеат
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #143697
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Redd  10.09.2022, 12:09
[игнорируется]
Doublekey  10.09.2022, 12:06
[игнорируется]
Redd  10.09.2022, 11:15
[игнорируется]
9288  10.09.2022, 10:35
[игнорируется]
Если речь про собеседование и одного упоминания про аналитику и предыдущее/следующее значения (не помню точный синтаксис), недостаточно, то есть смысл подумать о вменяемости интервьюеров
А на работе без доступа к интернету как-то совсем грустно... Сразу в топку
Все не могу запомнить и в режиме писать на бумаге, это анриал. Рассказать тока смог бы. Ну мысль и немного накорябать..
Яваскрипт, пхп, Ява, котлин, скл и около, все это гавно держать в башке анриал, все перемешалось уже [:biggrin2]
"Поэтому саша и не женицуо" огм
Любишь меня[:lol]?
Нет. Ты просто винегретчик
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #143702
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Здесь я прусь традиционно от ПапЫХТЕда
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #143778
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Doublekey  10.09.2022, 12:10
[игнорируется]
9288  10.09.2022, 10:35
[игнорируется]
Если речь про собеседование и одного упоминания про аналитику и предыдущее/следующее значения (не помню точный синтаксис), недостаточно, то есть смысл подумать о вменяемости интервьюеров
А на работе без доступа к интернету как-то совсем грустно... Сразу в топку
Лаги лиды надо знать а еще надо знать что у него три параметра на сама деле а не один. Мне весной дали 12 что ли задачек. Я на 6-ой устал сломался.
Это был ГПБ и я намертво забыл синтаксис партишин бая. Клин случилсо. Ну и согласились что надо кончать.

Аналитику с примерами на бумажке просят 9 из 10
Нецелевое расходование леса нашего богатства.

Расстрелять.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160816
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  09.09.2022, 23:19
[игнорируется]
Просто Трёп  09.09.2022, 23:10
[игнорируется]
У меня сейчас другая задачка, похожая на №2.
Есть таблица с datetime, известна периодичность данных, например, 4 секунды плюс-минус 0.1 секунды. Надо найти записи, между которыми период больше заданного и вставить туда строку. А курсоры не хочу юзать.
Формируй таблицу должных строк например за сутки год или хз
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with cte as
(
    SELECT convert(datetime,'20200501 05:00',120) as d
    UNION ALL
    SELECT dateadd(second,d,4)
    FROM cte
    WHERE d < convert(datetime,'20200502 05:00',120)
)
SELECT *
FROM cte
LEFT JOIN tbl
    ON tbl.d between dateadd(ss,-2,cte.d) AND dateadd(ss,+2,cte.d)
WHERE tbl.d is null
OPTION(maxrecursion 0)
Вывод пропусков. Вроде так, насколько я понял
Попробовал эту схему. Реально летает. Решил избавиться от cte, создать таблицу с нужными интервалами сразу лет на 50. Но поскольку эту таблицу надо будет юзать в нескольких базах, сделал ее вообще в отдельной базе. Ну и когда заджойнил ее с рабочей таблицей, выполнение получилось 9 секунд. Хотя с cte были доли секунды.

Подозреваю, что если джойнить таблицы из разных баз, индексы перестают работать. Ошибаюсь? Или наоборот, те индексы, что я создал в таблице с интервалами, могут мешать отдаче? В cte-то индексов нет.

Выкладывать код, или решение на поверхности?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160818
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поудалял индексы с таблицы интервалов, время выполнения уменьшилось с 9 секунд до 3. Чудеса.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160845
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  23.09.2022, 14:58
[игнорируется]
сделал ее вообще в отдельной базе. Ну и когда заджойнил ее с рабочей таблицей, выполнение получилось 9 секунд. Хотя с cte были доли секунды.
Так это...
Как его...
Я не думаю, что принципиально работа с удалённой БД отличается в оракле и мс скуле, доступ по линку всегда медленный.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160848
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  23.09.2022, 14:58
[игнорируется]
Дед-Папыхтет  09.09.2022, 23:19
[игнорируется]
Просто Трёп  09.09.2022, 23:10
[игнорируется]
У меня сейчас другая задачка, похожая на №2.
Есть таблица с datetime, известна периодичность данных, например, 4 секунды плюс-минус 0.1 секунды. Надо найти записи, между которыми период больше заданного и вставить туда строку. А курсоры не хочу юзать.
Формируй таблицу должных строк например за сутки год или хз
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with cte as
(
    SELECT convert(datetime,'20200501 05:00',120) as d
    UNION ALL
    SELECT dateadd(second,d,4)
    FROM cte
    WHERE d < convert(datetime,'20200502 05:00',120)
)
SELECT *
FROM cte
LEFT JOIN tbl
    ON tbl.d between dateadd(ss,-2,cte.d) AND dateadd(ss,+2,cte.d)
WHERE tbl.d is null
OPTION(maxrecursion 0)
Вывод пропусков. Вроде так, насколько я понял
Попробовал эту схему. Реально летает. Решил избавиться от cte, создать таблицу с нужными интервалами сразу лет на 50. Но поскольку эту таблицу надо будет юзать в нескольких базах, сделал ее вообще в отдельной базе. Ну и когда заджойнил ее с рабочей таблицей, выполнение получилось 9 секунд. Хотя с cte были доли секунды.

Подозреваю, что если джойнить таблицы из разных баз, индексы перестают работать. Ошибаюсь? Или наоборот, те индексы, что я создал в таблице с интервалами, могут мешать отдаче? В cte-то индексов нет.

Выкладывать код, или решение на поверхности?
Таблица предварительно созданная из одного поля с первичным ключём?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160849
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  23.09.2022, 15:04
[игнорируется]
Поудалял индексы с таблицы интервалов, время выполнения уменьшилось с 9 секунд до 3. Чудеса.
Потому что быстрее закачать всю таблицу видимо.
В оракле есть хинт DRIVING_SITE, он может заставить отработать запрос на стороне удалённой БД, но из-за сетевых задержек всё равно может быть медленнее, чем с таблицей в самой БД.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160854
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  23.09.2022, 15:31
[игнорируется]
Просто Трёп  23.09.2022, 14:58
[игнорируется]
Дед-Папыхтет  09.09.2022, 23:19
[игнорируется]
Просто Трёп  09.09.2022, 23:10
[игнорируется]
У меня сейчас другая задачка, похожая на №2.
Есть таблица с datetime, известна периодичность данных, например, 4 секунды плюс-минус 0.1 секунды. Надо найти записи, между которыми период больше заданного и вставить туда строку. А курсоры не хочу юзать.
Формируй таблицу должных строк например за сутки год или хз
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with cte as
(
    SELECT convert(datetime,'20200501 05:00',120) as d
    UNION ALL
    SELECT dateadd(second,d,4)
    FROM cte
    WHERE d < convert(datetime,'20200502 05:00',120)
)
SELECT *
FROM cte
LEFT JOIN tbl
    ON tbl.d between dateadd(ss,-2,cte.d) AND dateadd(ss,+2,cte.d)
WHERE tbl.d is null
OPTION(maxrecursion 0)
Вывод пропусков. Вроде так, насколько я понял
Попробовал эту схему. Реально летает. Решил избавиться от cte, создать таблицу с нужными интервалами сразу лет на 50. Но поскольку эту таблицу надо будет юзать в нескольких базах, сделал ее вообще в отдельной базе. Ну и когда заджойнил ее с рабочей таблицей, выполнение получилось 9 секунд. Хотя с cte были доли секунды.

Подозреваю, что если джойнить таблицы из разных баз, индексы перестают работать. Ошибаюсь? Или наоборот, те индексы, что я создал в таблице с интервалами, могут мешать отдаче? В cte-то индексов нет.

Выкладывать код, или решение на поверхности?
Таблица предварительно созданная из одного поля с первичным ключём?
Не, там два поля, int и datetime. Первичный ключ - инт, на datetime индекс повесил. В cte точно также, два поля.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160857
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  23.09.2022, 15:34
[игнорируется]
Дед-Папыхтет  23.09.2022, 15:31
[игнорируется]
Просто Трёп  23.09.2022, 14:58
[игнорируется]
Дед-Папыхтет  09.09.2022, 23:19
[игнорируется]
Просто Трёп  09.09.2022, 23:10
[игнорируется]
...
Формируй таблицу должных строк например за сутки год или хз
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with cte as
(
    SELECT convert(datetime,'20200501 05:00',120) as d
    UNION ALL
    SELECT dateadd(second,d,4)
    FROM cte
    WHERE d < convert(datetime,'20200502 05:00',120)
)
SELECT *
FROM cte
LEFT JOIN tbl
    ON tbl.d between dateadd(ss,-2,cte.d) AND dateadd(ss,+2,cte.d)
WHERE tbl.d is null
OPTION(maxrecursion 0)
Вывод пропусков. Вроде так, насколько я понял
Попробовал эту схему. Реально летает. Решил избавиться от cte, создать таблицу с нужными интервалами сразу лет на 50. Но поскольку эту таблицу надо будет юзать в нескольких базах, сделал ее вообще в отдельной базе. Ну и когда заджойнил ее с рабочей таблицей, выполнение получилось 9 секунд. Хотя с cte были доли секунды.

Подозреваю, что если джойнить таблицы из разных баз, индексы перестают работать. Ошибаюсь? Или наоборот, те индексы, что я создал в таблице с интервалами, могут мешать отдаче? В cte-то индексов нет.

Выкладывать код, или решение на поверхности?
Таблица предварительно созданная из одного поля с первичным ключём?
Не, там два поля, int и datetime. Первичный ключ - инт, на datetime индекс повесил. В cte точно также, два поля.
Таблицу в этой же бд сделай скорость замерь
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160861
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я int столбец добавил, потому что подумал, что по нему группировку лучше будет делать. Теперь понимаю, что он лишний. По дате группировка такая же будет.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160862
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  23.09.2022, 15:34
[игнорируется]
Просто Трёп  23.09.2022, 15:34
[игнорируется]
Дед-Папыхтет  23.09.2022, 15:31
[игнорируется]
Просто Трёп  23.09.2022, 14:58
[игнорируется]
Дед-Папыхтет  09.09.2022, 23:19
[игнорируется]
...
Попробовал эту схему. Реально летает. Решил избавиться от cte, создать таблицу с нужными интервалами сразу лет на 50. Но поскольку эту таблицу надо будет юзать в нескольких базах, сделал ее вообще в отдельной базе. Ну и когда заджойнил ее с рабочей таблицей, выполнение получилось 9 секунд. Хотя с cte были доли секунды.

Подозреваю, что если джойнить таблицы из разных баз, индексы перестают работать. Ошибаюсь? Или наоборот, те индексы, что я создал в таблице с интервалами, могут мешать отдаче? В cte-то индексов нет.

Выкладывать код, или решение на поверхности?
Таблица предварительно созданная из одного поля с первичным ключём?
Не, там два поля, int и datetime. Первичный ключ - инт, на datetime индекс повесил. В cte точно также, два поля.
Таблицу в этой же бд сделай скорость замерь
ок.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160907
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал в этой же бд, не помогло. Назначил единственный столбец Prmairy Key, ничего не изменилось.
В общем, идентичный код, с cte - доли секунды, с существующей таблицей - 3-4 секунды.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #160928
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
--table
SELECT i_days.dt, count(1) cnt, sum(calls.duration)/60 d_min
FROM i_days left join calls on calls.dt between i_days.dt and dateadd(day, 1, i_days.dt)
where
  calls.incoming = 1 and calls.ext not like '6%' and calls.cd <> 'TR'
  and  i_days.dt between '2017-05-18T00:00:00.000' and '2022-09-23T00:00:00.000'
group by i_days.dt
order by 1

--cte
;with cte as
(
    SELECT convert(datetime,'2000-01-01T00:00:00.000') as sdt
    UNION ALL
    SELECT dateadd(day, 1, sdt)
    FROM cte
    WHERE sdt < convert(datetime,'2041-01-01T00:00:00.000')
)
SELECT cte.sdt, count(1) cnt, sum(calls.duration)/60 d_min
FROM cte left join calls on calls.dt between cte.sdt and dateadd(day, 1, cte.sdt)
where
  calls.incoming = 1 and calls.ext not like '6%' and calls.cd <> 'TR'
  and  cte.sdt between '2017-05-18T00:00:00.000' and '2022-09-23T00:00:00.000'
group by cte.sdt
order by 1
OPTION(maxrecursion 0)
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161078
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  23.09.2022, 16:14
[игнорируется]
Код: SQL
1.
i_days
Код: SQL
1.
create unique index ix123 on i_days (dt)
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT i_days.dt, count(1) cnt, sum(calls.duration)/60 d_min
FROM i_days left join calls
  --on calls.dt between i_days.dt and dateadd(day, 1, i_days.dt)
  --on calls.dt >= i_days.dt and calls.dt <= dateadd(day, 1, i_days.dt)
  on calls.dt >= i_days.dt and i_days.dt >= dateadd(day,-1,calls.dt)
where
  calls.incoming = 1 and calls.ext not like '6%' and calls.cd <> 'TR'
  and  i_days.dt between '2017-05-18T00:00:00.000' and '2022-09-23T00:00:00.000'
group by i_days.dt
order by 1
3 условия в ON попробуй с каждым + индекс. Сравни.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161129
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок. Праймари кей нужен? Или только юник индекс?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161131
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  23.09.2022, 19:16
[игнорируется]
Ок. Праймари кей нужен? Или только юник индекс?
Unique index - тоже самое что primaru key. Если у тебя по другому полю первичный ключ то. Ндекс если одно поле первичный ключ
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161134
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Дед-Папыхтет  23.09.2022, 19:18
[игнорируется]
Unique index - тоже самое что primaru key.
Да? В primary key может быть null? Ой!
...
Рейтинг: 0 / 1
Не нравится: Vaska Balboa
Задачи с собеседования для базоёбов.
    #161160
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Дед-Папыхтет  23.09.2022, 19:18
[игнорируется]
Просто Трёп  23.09.2022, 19:16
[игнорируется]
Ок. Праймари кей нужен? Или только юник индекс?
Unique index - тоже самое что primaru key. Если у тебя по другому полю первичный ключ то. Ндекс если одно поле первичный ключ
Попых ты что пьешь что ли уже?

В поле под праймари кеем НЕ может быть нуллов. в поле под юник индексом МОЖЕТ быть нулл.

вот юник индекс и индекс на колонку которая примари кей да одно и тоже.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161165
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
И вообще Попых как тебе нестыдно. Примари кей и юник индекс это вообще разные сущности. потому что примари кей создается как констрейнт. а индекс это индекс.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161166
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не бейте Папыха! Он нам еще нужен!

В контексте вопроса-то он правильно сказал. В том поле не может быть нуллов и она обязательно уникальна. А вот какой будет план запроса в том и другом случае - тайна велика! Для экспресс эдишна.
...
Рейтинг: 0 / 0
25 сообщений из 364, страница 12 из 15
Форумы / SQL [закрыт для гостей] / Задачи с собеседования для базоёбов.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (2): Анонимы (2)
Игнорируют тему (1): erbol
Читали форум (1): Анонимы (1)
Пользователи онлайн (29): Анонимы (21), Yandex Bot, Google Bot, Ветер, Bing Bot 1 мин., Urri 6 мин., anonymous 6 мин., prostozevs 9 мин., Biene Maja 9 мин.
x
x
Закрыть


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