Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

  • Location:
  • Music:

Две задачки

Вчера я был на собеседовании по поводу трудоустройства в одно широкоизвестное заведение. Про PHP вопрос был всего один, и я ответил совершенно верно, потому что он был простой. Потом начались вопросы, касающиеся SQL, и на них-то я и засыпался. Сейчас я, посидев дома в относительно спокойной обстановке и с мануалом под рукой, придумал на них ответы, один точно верный, и один через-жопу-кувырком.
Вашему внимаю представляю:

1) дана таблица tabl, в ней всего одно поле N целочисленного типа. В таблице лежат цифры:
1 2 3 4 6 7 10 11 12 13 20 21 22 23 30 ...
То есть числовая последовательность с "дырками", разбросанными бессистемно. Задание: извлечь одним запросом цифры, находящиеся слева от дырок (я их выделил жирным).

2) изобразить на языке SQL календарь на текущий месяц.

Ответы:


1)
select N as i from tabl where if((select N from tabl where N = i + 1),null, N);

2)
select @offset := date_format(curdate(), '%e') mod 7;
select @m := date_format(curdate(), '%c');
select @yv := date_format(curdate(), '%y') mod 4;

select if(0 - @offset <= 0, ' ',0 - @offset) as MN,
if(1 - @offset <= 0, ' ', 1 - @offset) as TU,
if(2 - @offset <= 0, ' ', 2 - @offset) as WD,
if(3 - @offset <= 0, ' ', 3 - @offset) as TH,
if(4 - @offset <= 0, ' ', 4 - @offset) as FR,
if(5 - @offset <= 0, ' ', 5 - @offset) as SA,
if(6 - @offset <= 0, ' ', 6 - @offset) as SU

union

select 7 - @offset,
8 - @offset,
9 - @offset,
10 - @offset,
11 - @offset,
12 - @offset,
13 - @offset

union ...
дальше я писать не стал, и всякие длинные несложные проверки в конце тоже придумывать не захотел. Мне кажется, эта запись чересчур громоздка, и должен существовать более компактный вариант.

И в качестве бонуса: написать регулярное выражение для определения баланса скобочек в строке. Ну, скажем, дана строка типа
((()))()(())))()(()()()))(()()
И одной сверкой с регулярным выражением надло определить, всем ли закрывающимся скобкам соответствуют открывающиеся, и нет ли лишних.
Если мне кто-нибудь объяснит, почему `\((|(?R))\)` не работает, я буду очень благодарен.
Tags: web, работа
Subscribe

  • Ситуация и настроение

    У нас тут продолжаются совещания правительства по тому, какие же меры ещё принять, чтоб остановить распространение вируса. Ну вот то есть целый год у…

  • Запах кофе и спасительная сила шоколада

    С утра болела голова. Она у меня ещё ночью начала болеть, я во сне почувствовал. Ну, с утра встал, попил чай, всё как обычно. Потом, думаю, дай-ка я…

  • Situation report 24

    Что у нас тут творится. Сегодня весь день правительство заседает и ссорится из-за продления или непродления статуса чрезвычайной ситуации (из-за…

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments