powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQL [закрыт для гостей] / Задачи с собеседования для базоёбов.
25 сообщений из 384, страница 15 из 16
Задачи с собеседования для базоёбов.
    #164272
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Горбатый ёж  26.09.2022, 17:22:39
[игнорируется]
Doublekey  26.09.2022, 17:01:28
[игнорируется]
потому что какие то строки это запрос будет всегда возвращать насколько я понимаю
Я не знаю как в других местах, а вот в оракле есть нюанс
Код: 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
Задачи с собеседования для базоёбов.
    #164276
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарыныч  26.09.2022, 17:26:05
[игнорируется]
ето ответ?
Это демонстрация.
Тебе зачем?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164279
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Горбатый ёж  26.09.2022, 17:27:19
[игнорируется]
Гарыныч  26.09.2022, 17:26:05
[игнорируется]
ето ответ?
Это демонстрация.
Тебе зачем?
нафсякей :)))
https://otvet.mail.ru/question/216295878
https://qastack.ru/dba/435/how-does-the-oracle-dual-table-work
...
Изменено: 26.09.2022, 17:32:30 - Гарыныч
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164303
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарыныч  26.09.2022, 17:28:11
[игнорируется]
Горбатый ёж  26.09.2022, 17:27:19
[игнорируется]
Гарыныч  26.09.2022, 17:26:05
[игнорируется]
ето ответ?
Это демонстрация.
Тебе зачем?
нафсякей :)))
https://otvet.mail.ru/question/216295878
https://qastack.ru/dba/435/how-does-the-oracle-dual-table-work
Спасибо, я постараюсь запомнить, рпедварительно тщательно изучив предоставленные тобой материалы.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #164317
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Горбатый ёж  26.09.2022, 17:41:45
[игнорируется]
Гарыныч  26.09.2022, 17:28:11
[игнорируется]
Горбатый ёж  26.09.2022, 17:27:19
[игнорируется]
Гарыныч  26.09.2022, 17:26:05
[игнорируется]
ето ответ?
Это демонстрация.
Тебе зачем?
нафсякей :)))
https://otvet.mail.ru/question/216295878
https://qastack.ru/dba/435/how-does-the-oracle-dual-table-work
Спасибо, я постараюсь запомнить, рпедварительно тщательно изучив предоставленные тобой материалы.
:)))

зы: нафсякей - это был ответ на твой вопрос...

а тынцы приложил для себя, ипать
...
Изменено: 26.09.2022, 17:55:50 - Гарыныч
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #165290
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[не одобрен]
[заблокирован]
Горбатый ёж  26.09.2022, 17:22:39
[игнорируется]
Doublekey  26.09.2022, 17:01:28
[игнорируется]
потому что какие то строки это запрос будет всегда возвращать насколько я понимаю
Я не знаю как в других местах, а вот в оракле есть нюанс
Код: 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;
Это банальный нюанс NoDataFound

Но ты же писал что
Цитата 
[игнорируется]
Данные есть либо в одной из таблиц либо в обеих таблицах.
или ты имел ввиду что данные ПРОСТО есть а не есть по условию?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #165310
Червь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  23.09.2022, 19:47:05
[игнорируется]
Просто Трёп  23.09.2022, 19:44:14
[игнорируется]
Не бейте Папыха! Он нам еще нужен!

В контексте вопроса-то он правильно сказал. В том поле не может быть нуллов и она обязательно уникальна. А вот какой будет план запроса в том и другом случае - тайна велика! Для экспресс эдишна.
мне один человек говорил что индексы по датам так себе идея. но может быть но был неправ
Фигня. Всегда есть контекст задачи, который определяет использование индексов, в частности по дате. Теория это как сферический конь в вакууме.
У меня есть табличка на n-миллиардов записей, партифицированная конечно и индекс партифицирован по дате. Без индекса по дате невозможно вообще с такой таблицей работать. А delete вообще песня: часами висит, во много раз быстрее удалить партицию и пересоздать часть индекса.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #165317
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  27.09.2022, 17:26:02
[игнорируется]
Но ты же писал что
Цитата 
[игнорируется]
Данные есть либо в одной из таблиц либо в обеих таблицах.
или ты имел ввиду что данные ПРОСТО есть а не есть по условию?
Переименуй, что данные есть в одном из наборов. Что поменялось?
И при чём здесь nodatafound?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #165349
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[не одобрен]
[заблокирован]
1
...
Изменено: 27.09.2022, 18:32:06 - Doublekey
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #165350
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[не одобрен]
[заблокирован]
хотя нет, сдаюсь :-) во втором то датасете данные соответствующие условию есть :-)
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #165470
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  27.09.2022, 18:31:49
[игнорируется]
хотя нет, сдаюсь :-) во втором то датасете данные соответствующие условию есть :-)
В том-то и хер.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Задачи с собеседования для базоёбов.
    #743547
Фотография Владайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, я ваша носорожка.
Дед-Папыхтет  07.09.2022, 14:32:35
[игнорируется]
Есть таблица с числами

declare @t table (num numeric(39,0)); или даже строка varchar(max) пох.
Нужно запросом вывести эту таблицу и доп поле в которой сумма цифр.
Пример

num res
1234 10
9999 36
так можно?
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT num,
       (SELECT SUM(CAST(digit AS INT))
        FROM (
              SELECT SUBSTRING(num, n, 1) AS digit
              FROM (
                    SELECT num, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS n
                    FROM @t
                   ) AS digits
              WHERE digit LIKE '[0-9]'
             ) AS digit_sum
       ) AS res
FROM @t;
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #743586
Фотография Владайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, я ваша носорожка.
Дед-Папыхтет  07.09.2022, 14:32:35
[игнорируется]
Задача "посчитать и вывести запросом сумму цифр в каждом поле". Уровень ну наверное мидл, хотя если джун будет такие решать еще лучше.

Есть таблица с числами

declare @t table (num numeric(39,0)); или даже строка varchar(max) пох.
Нужно запросом вывести эту таблицу и доп поле в которой сумма цифр.
Пример

num res
1234 10
9999 36
упс, вот так если поиграться:
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
-- sqlite

-- Удаление существующей временной таблицы, если она есть
DROP TABLE IF EXISTS t;

-- Создание временной таблицы и заполнение её данными
CREATE TEMP TABLE t (num TEXT);
INSERT INTO t (num) VALUES ('1234'), ('1235'), ('9999');

-- Запрос для вычисления суммы цифр и вывода результата
SELECT num,
       (SELECT SUM(CAST(SUBSTR(num, n, 1) AS INTEGER))
        FROM (
              SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10
             ) AS numbers
        WHERE n <= LENGTH(num) AND SUBSTR(num, n, 1) BETWEEN '0' AND '9'
       ) AS res
FROM t;
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
-- t-sql
-- Создание временной таблицы и заполнение её данными
CREATE TABLE #t (num VARCHAR(MAX));
INSERT INTO #t (num) VALUES ('1234'), ('1235'), ('9999');

-- Запрос для вычисления суммы цифр и вывода результата
WITH Numbers AS (
    SELECT 1 AS n
    UNION ALL
    SELECT n + 1
    FROM Numbers
    WHERE n < 10
)

SELECT t.num,
       SUM(CAST(SUBSTRING(t.num, n, 1) AS INT)) AS res
FROM #t t
JOIN Numbers ON n <= LEN(t.num)
GROUP BY t.num;
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Задачи с собеседования для базоёбов.
    #1776717
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо было посмотреть количество отказов в логе прокси-сервера.
cip - адрес клиента
host - имя сервера

Сперва написал так. Взял таблицу с днями, сместил на день вперед, заджойнил с логом.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
;with dd as (select d1.dt dt1, d2.dt dt2 from master.dbo.DayParts1Day d1 inner join master.dbo.DayParts1Day d2 on d2.dt = dateadd(day, 1, d1.dt))

select
  dd.dt1,
  count(1) as alll,
  count(case when p.err=0 then 1 end) as good,
  count(case when p.err=13 then 1 end) as bad
from proxylog p inner join dd on p.dt > dd.dt1 and p.dt < dd.dt2
where cip like '192.168.0.2'
and host like 'zerno%'
group by dd.dt1
order by 1
Запрос выполняется 5 минут, хотя первый with исполняется мгновенно. И count(case when на скорость не влияет. Мне это не понравилось, пришлось переписать.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
;with t1 as (select
  cast(p.dt as int) dt,
  count(1) as alll,
  count(case when p.err=0 then 1 end) as good,
  count(case when p.err=13 then 1 end) as bad
from proxylog p
where cip like '192.168.0.2'
and host like 'zerno%'
group by cast(p.dt as int)
)

select cast(dt as datetime) dt, alll, good, bad from t1 order by 1
Теперь летает как самолет.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #1776718
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФГИС Зерно последние дни в натуре лежало.
pasted_image.png
Но теперь очухалось.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #1776719
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, только сейчас обратил внимание, при кастинге в инт и обратно дата почему-то сместилась на день вперед. Вот так правильно.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
;with t1 as (select
  cast(p.dt as int) dt,
  count(1) as alll,
  count(case when p.err=0 then 1 end) as good,
  count(case when p.err=13 then 1 end) as bad
from proxylog p
where cip like '192.168.0.2'
and host like 'zerno%'
group by cast(p.dt as int)
)

select cast(dt - 1 as datetime) dt, alll, good, bad from t1 order by 1
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #1776721
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а почему так? Мы взяли datetime, которая на самом деле real, обрезали дробную часть, сгруппировали данные по целой части, потом конвертнули int в datetime обратно, и получили плюс один день.

Задачка для собеседования!
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #1776724
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же все нормально.
Код: SQL
1.
select cast(cast(getdate() as int) as datetime)
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #1776728
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только сейчас обратил внимание на то, что Экспресс показывает план выполнения. Раньше не показывал.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #1776740
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  26.06.2026, 08:22:06
[игнорируется]
Кстати, а почему так? Мы взяли datetime, которая на самом деле real, обрезали дробную часть, сгруппировали данные по целой части, потом конвертнули int в datetime обратно, и получили плюс один день.

Задачка для собеседования!
Я бы делал конверт к date а после обратно в datetime. К инт сомнительно хотя хз
...
Рейтинг: 1 / 0
Нравится: Сталкер
Задачи с собеседования для базоёбов.
    #1776756
Сталкер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Просто Трёп  26.06.2026, 08:17:08
[игнорируется]
О, только сейчас обратил внимание, при кастинге в инт и обратно дата почему-то сместилась на день вперед. Вот так правильно.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
;with t1 as (select
  cast(p.dt as int) dt,
  count(1) as alll,
  count(case when p.err=0 then 1 end) as good,
  count(case when p.err=13 then 1 end) as bad
from proxylog p
where cip like '192.168.0.2'
and host like 'zerno%'
group by cast(p.dt as int)
)

select cast(dt - 1 as datetime) dt, alll, good, bad from t1 order by 1
Есть предположение, что при касте в инт, значение дробной части не отрезается, а округляется к ближайшему целому (по крайней мере, на текущей версии).
Можно проверить, поигравшись с датой-временем. Это были вечерние часы или утренние?
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #1776758
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, еще же есть просто date. Я и забыл. Тогда обратно в datetime можно и не конвертить.
...
Рейтинг: 1 / 0
Нравится: Сталкер
Задачи с собеседования для базоёбов.
    #1776760
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сталкер  26.06.2026, 09:30:54
[игнорируется]
Просто Трёп  26.06.2026, 08:17:08
[игнорируется]
О, только сейчас обратил внимание, при кастинге в инт и обратно дата почему-то сместилась на день вперед. Вот так правильно.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
;with t1 as (select
  cast(p.dt as int) dt,
  count(1) as alll,
  count(case when p.err=0 then 1 end) as good,
  count(case when p.err=13 then 1 end) as bad
from proxylog p
where cip like '192.168.0.2'
and host like 'zerno%'
group by cast(p.dt as int)
)

select cast(dt - 1 as datetime) dt, alll, good, bad from t1 order by 1
Есть предположение, что при касте в инт, значение дробной части не отрезается, а округляется к ближайшему целому (по крайней мере, на текущей версии).
Можно проверить, поигравшись с датой-временем. Это были вечерние часы или утренние?
При касте в date тоже происходит смещение на день вперед.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
  cast(p.dt as date) dt,
  count(1) as alll,
  count(case when p.err=0 then 1 end) as good,
  count(case when p.err=13 then 1 end) as bad
from proxylog p
where cip like '192.168.0.2'
and host like 'zerno%'
group by cast(p.dt as date)
order by 1
dt alll good bad
2026-06-16 3097 3097 0
2026-06-17 3508 3508 0
2026-06-18 8387 8386 1
2026-06-19 3305 3304 1
2026-06-22 352 253 99
2026-06-23 183 113 70
2026-06-24 72 47 25
2026-06-25 752 736 15
2026-06-26 125 125 0
Сегодня запросов еще не было.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #1776763
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, не, уже пошли коннекты к зерну. Цифры совсем другие.
...
Рейтинг: 0 / 0
Задачи с собеседования для базоёбов.
    #1776767
Сталкер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Просто Трёп  26.06.2026, 09:36:15
[игнорируется]
Сталкер  26.06.2026, 09:30:54
[игнорируется]
Просто Трёп  26.06.2026, 08:17:08
[игнорируется]
О, только сейчас обратил внимание, при кастинге в инт и обратно дата почему-то сместилась на день вперед. Вот так правильно.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
;with t1 as (select
  cast(p.dt as int) dt,
  count(1) as alll,
  count(case when p.err=0 then 1 end) as good,
  count(case when p.err=13 then 1 end) as bad
from proxylog p
where cip like '192.168.0.2'
and host like 'zerno%'
group by cast(p.dt as int)
)

select cast(dt - 1 as datetime) dt, alll, good, bad from t1 order by 1
Есть предположение, что при касте в инт, значение дробной части не отрезается, а округляется к ближайшему целому (по крайней мере, на текущей версии).
Можно проверить, поигравшись с датой-временем. Это были вечерние часы или утренние?
При касте в date тоже происходит смещение на день вперед.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
  cast(p.dt as date) dt,
  count(1) as alll,
  count(case when p.err=0 then 1 end) as good,
  count(case when p.err=13 then 1 end) as bad
from proxylog p
where cip like '192.168.0.2'
and host like 'zerno%'
group by cast(p.dt as date)
order by 1
dt alll good bad
2026-06-16 3097 3097 0
2026-06-17 3508 3508 0
2026-06-18 8387 8386 1
2026-06-19 3305 3304 1
2026-06-22 352 253 99
2026-06-23 183 113 70
2026-06-24 72 47 25
2026-06-25 752 736 15
2026-06-26 125 125 0
Сегодня запросов еще не было.
Хм. Ну, в SQL Server можно ещё при помощи floor резать дробную часть.
То есть, часы всегда вечерние, и значение округляется до ближайшего целого, верно?
...
Рейтинг: 0 / 0
25 сообщений из 384, страница 15 из 16
Форумы / SQL [закрыт для гостей] / Задачи с собеседования для базоёбов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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