powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / SQL [закрыт для гостей] / Задачи с собеседования для базоёбов.
25 сообщений из 364, страница 14 из 15
Задачи с собеседования для базоёбов.
    #161325
Артефакт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Цитата 
[игнорируется]
предикат конъюктивно составной
а если по русски?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161326
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно один или другой индекс - вопрос какие запросы используются. Так это лишь риторика
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161329
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артефакт  23.09.2022, 21:45
[игнорируется]
Цитата 
[игнорируется]
предикат конъюктивно составной
а если по русски?
Bool1 and Bool2 - конъюнкция
Индекс простой из 1 поля, более полей составной
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161433
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  23.09.2022, 21:30
[игнорируется]
Здесь вопрос - какой индекс лучше
(Пол,Дата) или (Дата,Пол)?
Приведи плюсы минусы и если разрешено создать один из 2х индексов - какой создать?
Всё зависит от запросов, которые будут чаще использоваться.
Если есть вариант использования в условии отбора одного из полей без второго, то в голову ставить тот, что будет использоваться один.
Только я всё равно не понимаю, почему индекс по полу datetime нежелательно строить.
Тем более, что составной индекс - это отдельная песня, там надо смотреть запросы.
Дед-Папыхтет  23.09.2022, 21:44
[игнорируется]
А вот индекс (name,id) часто полезен например (partition by name order by id)
А вот этот п=вопрос надо провентилировать.
Спасибо за наводку.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161437
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  23.09.2022, 21:08
[игнорируется]
Горбатый ёж  23.09.2022, 21:06
[игнорируется]
PaNik  23.09.2022, 21:02
[игнорируется]
Горбатый ёж  23.09.2022, 21:01
[игнорируется]
Doublekey  23.09.2022, 20:38
[игнорируется]
...
А какая разница?
date и dateime - две большие разницы в ms sql server
Одно число, другое не число?
ты прям ка Хуск, которого в гугле забанили
И всё таки какая принципиальная разница между ними с точки зрения построения индекса? Что datetime 8 байт? Это всё?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161450
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Дед-Папыхтет  23.09.2022, 19:18
[игнорируется]
Просто Трёп  23.09.2022, 19:16
[игнорируется]
Ок. Праймари кей нужен? Или только юник индекс?
Unique index - тоже самое что primaru key. Если у тебя по другому полю первичный ключ то. Ндекс если одно поле первичный ключ
Не совсем так . В таблице может быть и естественный, и суррогатный уникальные ключи. Кого из них назначить первичным (кластерным) - на усмотрение архитектора. Хотя, конечно, в теории никаких кластерных индексов нет, как нет и суррогатных ключей
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #161465
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Doublekey  23.09.2022, 19:47
[игнорируется]
Просто Трёп  23.09.2022, 19:44
[игнорируется]
Не бейте Папыха! Он нам еще нужен!

В контексте вопроса-то он правильно сказал. В том поле не может быть нуллов и она обязательно уникальна. А вот какой будет план запроса в том и другом случае - тайна велика! Для экспресс эдишна.
мне один человек говорил что индексы по датам так себе идея. но может быть но был неправ
Все зависит от того, какая роль у таблицы. Как правило главные таблицы учета чего-то имеют поля "Дата" и "Номер документа" и еще какие-то, например "название чего-то". В этом случае лучше создавать кластерный индекс по этим полям, так как многие выборки будут содержать дату и/или номер.

А возможно, что чаще будет нужен не "Номер документа", а "название чего-то". Архитектор должен ясно представлять, какие поля будут использоваться в запросе чаще всего,.
Кластерный индекс дает полное покрытие, то есть при запросе по нему выдает все поля записи.
Некластерный индекс, состоящий из одного поля, выдает адрес записи и требуется еще одно действие, что бы прочитать эту запись.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #163834
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблицы t1, t2 и запрос к ним:
Код: SQL
1.
2.
3.
4.
5.
select
   x1.f1 as x1, x2.f1 as x2
from
   (select t1.f1 from t1 where condition_field  = :p_condition_value) x1,
   (select t2.f1 from t2 where condition_field = :p_condition_value) x2
Данные есть либо в одной из таблиц либо в обеих таблицах.
Необходимо чтобы запрос всегда возвращал данные.
Верно ли написан запрос, если нет, то почему и как его исправить?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #163848
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Горбатый ёж  26.09.2022, 11:49
[игнорируется]
Есть таблицы t1, t2 и запрос к ним:
Код: SQL
1.
2.
3.
4.
5.
select
   x1.f1 as x1, x2.f1 as x2
from
   (select t1.f1 from t1 where condition_field  = :p_condition_value) x1,
   (select t2.f1 from t2 where condition_field = :p_condition_value) x2
Данные есть либо в одной из таблиц либо в обеих таблицах.
Необходимо чтобы запрос всегда возвращал данные.
Верно ли написан запрос, если нет, то почему и как его исправить?
Ты зачем добрый человек такие задачки уважаемым людям даешь.
а есть по этому ключу в таблица не одна а несколько строчек? это ж трам там там какой то будет.
кроме того надо уточнить на тему повторяемости данных. которая даже если поправить при таком варианте запроса (то есть джоине)
неизбежна если больше одной строки в одном из датасета.
ну и на будущее если строки в одной и другой таблице идентичны нужны ли обе копии или только одна.
и третье им нужна выборка именно из ЧЕТЫРЕХ колонок?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #163862
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  26.09.2022, 12:01
[игнорируется]
а есть по этому ключу в таблица не одна а несколько строчек?
И что?
Про количество строк в задаче ничего не сказано, главное, чтобы всегда возвращались данные.
Doublekey  26.09.2022, 12:01
[игнорируется]
им нужна выборка именно из ЧЕТЫРЕХ колонок?
В данном случае их вообще всего 2, колонки-то.

Но раз ты настаиваешь, пусть строки дублируются, пусть их будет миллиард (очкуешь - ограничь выборку например 100 любыми первыми строками) и колонок может быть нужно даже 800, если они есть в таком количестве в таблицах (замени f1 на *).
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #163871
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  23.09.2022, 18:31
[игнорируется]
Просто Трёп  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 попробуй с каждым + индекс. Сравни.
О, вариант с больше меньше даже быстрее cte. Спасибо.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164021
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как сделать, чтобы в выборку попали строки с null? В этом же запросе.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164071
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
full join не хляет.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164073
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что, опять union all?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164096
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, это как раз тот случай, когда надо использовать Analysis Services?
Всех комбинаций таких условий
Код: SQL
1.
where calls.incoming = 1 and calls.ext not like '6%' and calls.cd <> 'TR'
может быть десятки.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164108
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  26.09.2022, 14:27
[игнорируется]
А как сделать, чтобы в выборку попали строки с null? В этом же запросе.
уточни конкретнее - какое поле нул ))))
добавь or field is null
или может нужно часть условия из where перенести в on (left join).
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164126
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  26.09.2022, 15:17
[игнорируется]
Просто Трёп  26.09.2022, 14:27
[игнорируется]
А как сделать, чтобы в выборку попали строки с null? В этом же запросе.
уточни конкретнее - какое поле нул ))))
добавь or field is null
или может нужно часть условия из where перенести в on (left join).
Поля с результатами агрегатных функций. Условие в where я не могу менять, тогда статистика порушится.
Перенести из where в on - жесть, какие тормоза.

Грубо говоря, мне надо, чтобы столбец с днями (первый) был непрерывный.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164142
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  26.09.2022, 15:30
[игнорируется]
Дед-Папыхтет  26.09.2022, 15:17
[игнорируется]
Просто Трёп  26.09.2022, 14:27
[игнорируется]
А как сделать, чтобы в выборку попали строки с null? В этом же запросе.
уточни конкретнее - какое поле нул ))))
добавь or field is null
или может нужно часть условия из where перенести в on (left join).
Поля с результатами агрегатных функций. Условие в where я не могу менять, тогда статистика порушится.
Перенести из where в on - жесть, какие тормоза.

Грубо говоря, мне надо, чтобы столбец с днями (первый) был непрерывный.
Дед-Папыхтет  23.09.2022, 18:31
[игнорируется]
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
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)
  and calls.incoming = 1 and calls.ext not like '6%' and calls.cd <> 'TR'
where 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
так?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164157
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так попробовал, но не дождался результата.
Если условие упросить, то полторы минуты получилось. И вместо заведомых null (или ноль) выскочили единички. Наверное, можно наделать индексов, чтобы оно нормально заработало, но что делать с фейковыми единицами, непонятно.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164164
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, проще будет обернуть то, что есть, в cte, а потом еще раз заджойнить с i_days
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164182
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так. По скорости вполне приемлемо.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with stat as (
SELECT i_days.dt, count(1) cnt, sum(calls.duration)/60 d_min
FROM i_days full join calls 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'
group by i_days.dt
)
select d.dt, s.cnt, s.d_min
from i_days d full join stat s on d.dt = s.dt
where d.dt between '2017-05-18T00:00:00.000' and '2022-09-26T00:00:00.000'
order by 1
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164246
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Горбатый ёж  26.09.2022, 12:17
[игнорируется]
Doublekey  26.09.2022, 12:01
[игнорируется]
а есть по этому ключу в таблица не одна а несколько строчек?
И что?
Про количество строк в задаче ничего не сказано, главное, чтобы всегда возвращались данные.
Doublekey  26.09.2022, 12:01
[игнорируется]
им нужна выборка именно из ЧЕТЫРЕХ колонок?
В данном случае их вообще всего 2, колонки-то.

Но раз ты настаиваешь, пусть строки дублируются, пусть их будет миллиард (очкуешь - ограничь выборку например 100 любыми первыми строками) и колонок может быть нужно даже 800, если они есть в таком количестве в таблицах (замени f1 на *).
тогда это не задачка а говно потому что какие то строки это запрос будет всегда возвращать насколько я понимаю но возвращать говно
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164249
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Горбатый ёж  26.09.2022, 12:17
[игнорируется]
Doublekey  26.09.2022, 12:01
[игнорируется]
а есть по этому ключу в таблица не одна а несколько строчек?
И что?
Про количество строк в задаче ничего не сказано, главное, чтобы всегда возвращались данные.
Doublekey  26.09.2022, 12:01
[игнорируется]
им нужна выборка именно из ЧЕТЫРЕХ колонок?
В данном случае их вообще всего 2, колонки-то.

Но раз ты настаиваешь, пусть строки дублируются, пусть их будет миллиард (очкуешь - ограничь выборку например 100 любыми первыми строками) и колонок может быть нужно даже 800, если они есть в таком количестве в таблицах (замени f1 на *).
а ну я сослепу не увидел сорри. я имею ввиду им джоины нужны или юнионов хватит
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164250
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
1
...
Изменено: 26.09.2022, 17:06 - Doublekey
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164265
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  26.09.2022, 17:01
[игнорируется]
потому что какие то строки это запрос будет всегда возвращать насколько я понимаю
Я не знаю как в других местах, а вот в оракле есть нюанс
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with
t1 as (select 1 as f1, 1 as condition_field from dual),
t2 as (select 1 as f1, 1 as condition_field from dual
       union all
       select 1 as f1, 2 as condition_field from dual)

select
   x1.f1 as x1, x2.f1 as x2
from
   (select t1.f1 from t1 where condition_field  = 2) x1,
   (select t2.f1 from t2 where condition_field = 2) x2;
...
Рейтинг: 0 / 0
25 сообщений из 364, страница 14 из 15
Форумы / SQL [закрыт для гостей] / Задачи с собеседования для базоёбов.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol 
Читали форум (1): Анонимы (1)
Пользователи онлайн (51): Анонимы (45), Yandex Bot, Green 2 мин., Брюквенные годы 2 мин., erbol 3 мин., Tosh 3 мин., Bing Bot 7 мин.
x
x
Закрыть


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