Гость
Map
Форумы / SQL [закрыт для гостей] / Задачи с собеседования для базоёбов. / 25 сообщений из 364, страница 1 из 15
07.09.2022, 14:32
    #140514
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Ну для разминки и срача ))))
Кому то интересно что то решить, кому то просраться ))))
Недеюсь Сириус покажет мастер класс - и базоёбы поймут наконец-то что зря им платят зп ))))

Начнём?
...
Рейтинг: 0 / 0
07.09.2022, 14:32
    #140515
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Задача "посчитать и вывести запросом сумму цифр в каждом поле". Уровень ну наверное мидл, хотя если джун будет такие решать еще лучше.

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

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

num res
1234 10
9999 36
...
Рейтинг: 0 / 0
07.09.2022, 15:12
    #140532
Doublekey
Участник
[скрыт]
[заблокирован]
Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Лезут всякие с зп полляма а сириус тепереь скажет что это задачка фуфло он бы ее за пять иинут сделал
...
Рейтинг: 1 / 0
Нравится: PaNik
07.09.2022, 15:20
    #140540
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Барсук-копатель  07.09.2022, 14:58
[игнорируется]
Дед-Папыхтет  07.09.2022, 14:32
[игнорируется]
Задача "посчитать и вывести запросом сумму цифр в каждом поле". Уровень ну наверное мидл, хотя если джун будет такие решать еще лучше.

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

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.
19.
declare @t table (num numeric(38, 0) not null);
insert @t values (1234), (9999), (5992323455), (5609022888558), (0);

declare @num table (num int not null);
insert @num
  select top (1000)
    row_number() over (order by o.object_id)
  from sys.objects o;

select
  t.num
  , sum(convert(int, substring(convert(varchar(100), t.num), num.num, 1)))
from @t t
cross join @num num
where
  num.num <= len(convert(varchar(100), t.num))
  and t.num >= 0
group by
  t.num ;
Да базоёбы обычно такое и городят ))))))))))
Спойлер
сравни - план и время выполнения (ну время оценить нужно побольше данных):
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
  num,
  (len(num)-len(replace(num,'9','')))*9+
  (len(num)-len(replace(num,'8','')))*8+
  (len(num)-len(replace(num,'7','')))*7+
  (len(num)-len(replace(num,'6','')))*6+
  (len(num)-len(replace(num,'5','')))*5+
  (len(num)-len(replace(num,'4','')))*4+
  (len(num)-len(replace(num,'3','')))*3+
  (len(num)-len(replace(num,'2','')))*2+
  (len(num)-len(replace(num,'1','')))*1
from @t
...
Рейтинг: 0 / 0
07.09.2022, 15:59
    #140597
Гарыныч
Участник
[игнорирует гостей кроме]
[заблокирован: 1 дн. 7 час. 34 мин.]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Дед-Папыхтет  07.09.2022, 15:20
[игнорируется]
Барсук-копатель  07.09.2022, 14:58
[игнорируется]
Дед-Папыхтет  07.09.2022, 14:32
[игнорируется]
Задача "посчитать и вывести запросом сумму цифр в каждом поле". Уровень ну наверное мидл, хотя если джун будет такие решать еще лучше.

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

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.
19.
declare @t table (num numeric(38, 0) not null);
insert @t values (1234), (9999), (5992323455), (5609022888558), (0);

declare @num table (num int not null);
insert @num
  select top (1000)
    row_number() over (order by o.object_id)
  from sys.objects o;

select
  t.num
  , sum(convert(int, substring(convert(varchar(100), t.num), num.num, 1)))
from @t t
cross join @num num
where
  num.num <= len(convert(varchar(100), t.num))
  and t.num >= 0
group by
  t.num ;
Да базоёбы обычно такое и городят ))))))))))
Спойлер
сравни - план и время выполнения (ну время оценить нужно побольше данных):
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
  num,
  (len(num)-len(replace(num,'9','')))*9+
  (len(num)-len(replace(num,'8','')))*8+
  (len(num)-len(replace(num,'7','')))*7+
  (len(num)-len(replace(num,'6','')))*6+
  (len(num)-len(replace(num,'5','')))*5+
  (len(num)-len(replace(num,'4','')))*4+
  (len(num)-len(replace(num,'3','')))*3+
  (len(num)-len(replace(num,'2','')))*2+
  (len(num)-len(replace(num,'1','')))*1
from @t
куясе, а так можно было?
...
дед-пердед
Рейтинг: 0 / 0
07.09.2022, 16:00
    #140598
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Дед-Папыхтет  07.09.2022, 14:32
[игнорируется]
Нужно запросом вывести эту таблицу и доп поле в которой сумма цифр.
Пример

num res
1234 10
9999 36
ты же понимаешь что

1. сама задача тупость неибическая

2. если кто-то задумает эту тупость воплотить в жизнь, то сделают про це дуру
...
Рейтинг: 0 / 0
07.09.2022, 16:03
    #140603
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
или это просто на знание существования кроссджойна?
...
Рейтинг: 0 / 0
07.09.2022, 16:03
    #140607
Redd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Или так[:smile]
Код: 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.
CREATE FUNCTION `test_sum`(`_num` INT)
  RETURNS INT
  LANGUAGE SQL
  NOT DETERMINISTIC
  CONTAINS SQL
  SQL SECURITY DEFINER
  COMMENT ''
BEGIN
  DECLARE _res INT DEFAULT 0;
  DECLARE _len INT DEFAULT 0;

  SET _len = LENGTH(_num);

  WHILE _len >= 1 DO
    SET _res =_res + SUBSTRING(_num, _len, 1);
    SET _len = _len - 1;
  END WHILE;

  RETURN _res;
END

CREATE TABLE `ttt` (
  `num` INT(11) NULL DEFAULT NULL
)
COMMENT='test'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

INSERT INTO `db`.`ttt` (`num`) VALUES (1234);
INSERT INTO `db`.`ttt` (`num`) VALUES (9999);

SELECT num, test_sum(num) AS summ FROM ttt;
...
Рейтинг: 1 / 0
Нравится: eNose
07.09.2022, 16:07
    #140610
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Redd  07.09.2022, 16:03
[игнорируется]
Или так[:smile]
Код: 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.
CREATE FUNCTION `test_sum`(`_num` INT)
  RETURNS INT
  LANGUAGE SQL
  NOT DETERMINISTIC
  CONTAINS SQL
  SQL SECURITY DEFINER
  COMMENT ''
BEGIN
  DECLARE _res INT DEFAULT 0;
  DECLARE _len INT DEFAULT 0;

  SET _len = LENGTH(_num);

  WHILE _len >= 1 DO
    SET _res =_res + SUBSTRING(_num, _len, 1);
    SET _len = _len - 1;
  END WHILE;

  RETURN _res;
END

CREATE TABLE `ttt` (
  `num` INT(11) NULL DEFAULT NULL
)
COMMENT='test'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

INSERT INTO `db`.`ttt` (`num`) VALUES (1234);
INSERT INTO `db`.`ttt` (`num`) VALUES (9999);

SELECT num, test_sum(num) AS summ FROM ttt;
вот, в верном направлении мыслит товарищ
...
Рейтинг: 0 / 0
07.09.2022, 16:09
    #140612
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Redd [игнорируется] 

а почему не работаешь с числами как с числами?

ты же знаешь разрядность числа.
...
Рейтинг: 0 / 0
07.09.2022, 16:11
    #140615
Пулькин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Въеби им Сириус базоебам обоссаным [:grin]
...
Рейтинг: 1 / 0
Нравится: PaNik
07.09.2022, 16:16
    #140619
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Пулькин  07.09.2022, 16:11
[игнорируется]
Въеби им Сириус базоебам обоссаным [:grin]
да!

переписывай свою хуйню.

сабстринги убирай нахуй.

юзай деление и вычитание.
...
Рейтинг: 0 / 0
07.09.2022, 16:17
    #140623
Redd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
eNose  07.09.2022, 16:09
[игнорируется]
Redd [игнорируется] 

а почему не работаешь с числами как с числами?

ты же знаешь разрядность числа.
Ээ, не знаю, пришло это) разрываю число и складываю. А как можно еще?
...
Рейтинг: 0 / 0
07.09.2022, 16:19
    #140624
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Redd  07.09.2022, 16:17
[игнорируется]
eNose  07.09.2022, 16:09
[игнорируется]
Redd [игнорируется] 

а почему не работаешь с числами как с числами?

ты же знаешь разрядность числа.
Ээ, не знаю, пришло это) разрываю число и складываю. А как можно еще?
В ТЗ было запросом а не функцией ))) и пара решений уже озвучена
...
Рейтинг: 0 / 0
07.09.2022, 16:20
    #140625
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Redd  07.09.2022, 16:17
[игнорируется]
eNose  07.09.2022, 16:09
[игнорируется]
Redd [игнорируется] 

а почему не работаешь с числами как с числами?

ты же знаешь разрядность числа.
Ээ, не знаю, пришло это) разрываю число и складываю. А как можно еще?
num res
1234 10

1234/1000 -> 1
(1234 - 1*1000)/100 -> 2
(1234 - 1*1000 - 2*100)/10 -> 3
(1234 - 1*1000 - 2*100 - 3*10)/1 -> 4
...
Рейтинг: 0 / 0
07.09.2022, 16:20
    #140626
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
А где вы все были в теме про лоховской запрос нуба, то есть меня, по дедофоруму?
...
Рейтинг: 0 / 0
07.09.2022, 16:20
    #140627
Redd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Дед-Папыхтет  07.09.2022, 16:19
[игнорируется]
Redd  07.09.2022, 16:17
[игнорируется]
eNose  07.09.2022, 16:09
[игнорируется]
Redd [игнорируется] 

а почему не работаешь с числами как с числами?

ты же знаешь разрядность числа.
Ээ, не знаю, пришло это) разрываю число и складываю. А как можно еще?
В ТЗ было запросом а не функцией ))) и пара решений уже озвучена
Так я запросом и вывел)
...
Рейтинг: 0 / 0
07.09.2022, 16:20
    #140628
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
eNose  07.09.2022, 16:20
[игнорируется]
Redd  07.09.2022, 16:17
[игнорируется]
eNose  07.09.2022, 16:09
[игнорируется]
Redd [игнорируется] 

а почему не работаешь с числами как с числами?

ты же знаешь разрядность числа.
Ээ, не знаю, пришло это) разрываю число и складываю. А как можно еще?
num res
1234 10

1234/1000 -> 1
(1234 - 1*1000)/100 -> 2
(1234 - 1*1000 - 2*100)/10 -> 3
(1234 - 1*1000 - 2*100 - 3*10)/1 -> 4
то есть те же яйца, только математикой
...
Рейтинг: 0 / 0
07.09.2022, 16:23
    #140635
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
basename  07.09.2022, 16:20
[игнорируется]
А где вы все были в теме про лоховской запрос нуба, то есть меня, по дедофоруму?
Один кот2 разобрался

Господа базоёбы, скок сюды
...
Рейтинг: 0 / 0
07.09.2022, 16:23
    #140637
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
basename  07.09.2022, 16:20
[игнорируется]
А где вы все были в теме про лоховской запрос нуба, то есть меня, по дедофоруму?
Так не круглые сутки же здесь )
Ну и профильные форумы не читаем - нах они? когда есть ПТ
...
Рейтинг: 1 / 0
Нравится: eNose
07.09.2022, 16:23
    #140639
Redd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
eNose  07.09.2022, 16:20
[игнорируется]
Redd  07.09.2022, 16:17
[игнорируется]
eNose  07.09.2022, 16:09
[игнорируется]
Redd [игнорируется] 

а почему не работаешь с числами как с числами?

ты же знаешь разрядность числа.
Ээ, не знаю, пришло это) разрываю число и складываю. А как можно еще?
num res
1234 10

1234/1000 -> 1
(1234 - 1*1000)/100 -> 2
(1234 - 1*1000 - 2*100)/10 -> 3
(1234 - 1*1000 - 2*100 - 3*10)/1 -> 4
Чото заморочено, у меня тупа, быстро и работает чотко!)
...
Рейтинг: 0 / 0
07.09.2022, 16:24
    #140640
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Redd  07.09.2022, 16:23
[игнорируется]
eNose  07.09.2022, 16:20
[игнорируется]
Redd  07.09.2022, 16:17
[игнорируется]
eNose  07.09.2022, 16:09
[игнорируется]
Redd [игнорируется] 

а почему не работаешь с числами как с числами?

ты же знаешь разрядность числа.
Ээ, не знаю, пришло это) разрываю число и складываю. А как можно еще?
num res
1234 10

1234/1000 -> 1
(1234 - 1*1000)/100 -> 2
(1234 - 1*1000 - 2*100)/10 -> 3
(1234 - 1*1000 - 2*100 - 3*10)/1 -> 4
Чото заморочено, у меня тупа, быстро и работает чотко!)
"строки" и "быстро" - это миф
...
Рейтинг: 0 / 0
07.09.2022, 16:26
    #140643
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
Дед-Папыхтет  07.09.2022, 16:23
[игнорируется]
basename  07.09.2022, 16:20
[игнорируется]
А где вы все были в теме про лоховской запрос нуба, то есть меня, по дедофоруму?
Так не круглые сутки же здесь )
Ну и профильные форумы не читаем - нах они? когда есть ПТ
Тогда это гавно было в пт
...
Рейтинг: 0 / 0
07.09.2022, 16:27
    #140645
Redd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
eNose  07.09.2022, 16:24
[игнорируется]
Redd  07.09.2022, 16:23
[игнорируется]
eNose  07.09.2022, 16:20
[игнорируется]
Redd  07.09.2022, 16:17
[игнорируется]
eNose  07.09.2022, 16:09
[игнорируется]
...
Ээ, не знаю, пришло это) разрываю число и складываю. А как можно еще?
num res
1234 10

1234/1000 -> 1
(1234 - 1*1000)/100 -> 2
(1234 - 1*1000 - 2*100)/10 -> 3
(1234 - 1*1000 - 2*100 - 3*10)/1 -> 4
Чото заморочено, у меня тупа, быстро и работает чотко!)
"строки" и "быстро" - это миф
Согласен, но у тебя куча доп. действий и округления
...
Рейтинг: 0 / 0
07.09.2022, 16:29
    #140646
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи с собеседования для базоёбов.
eNose  07.09.2022, 16:16
[игнорируется]
Пулькин  07.09.2022, 16:11
[игнорируется]
Въеби им Сириус базоебам обоссаным [:grin]
да!

переписывай свою хуйню.

сабстринги убирай нахуй.

юзай деление и вычитание.
Если уж на то пошло, то
Дед-Папыхтет  07.09.2022, 14:32
[игнорируется]
или даже строка varchar(max) пох.
ЗЫ но тогда проверку надо на число реализовывать
...
Рейтинг: 0 / 0
Форумы / SQL [закрыт для гостей] / Задачи с собеседования для базоёбов. / 25 сообщений из 364, страница 1 из 15
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (3): Анонимы (3)
Игнорируют тему (1): erbol
Читали форум (4): Анонимы (4)
Пользователи онлайн (171): Анонимы (160), Bing Bot, Green, Неуловимый Джо, Ибрагимов Мага 82, IT-Клоп 1 мин., Yandex Bot 1 мин., С чистого листа 3 мин., Biene Maja 4 мин., Google Bot 6 мин., Брюквенные годы 7 мин., Буся 8 мин.
x
x
Закрыть


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