В общем, набираю на работу анонов с двача. Будете айтишниками. Писать на SQL. Для этого, нужно пройти собеседование в треде, отвечая на мои вопросы. Пользоваться можно чем угодно, включая ответы других анонов. Лучшего возьму на работу. ЗП 65-160к в зависимости от скила. Удаленка. Офис расположен в ДС, но вам туда не надо.
Первый вопрос: Существует таблица сотрудников. В этой таблице есть определенный набор полей (больше 5), включая их зарплату. Требуется одним запросом найти сотрудников с максимальной зарплатой.
>>225922241вижу себя в прошлой жизни монахом, который, блять, настолько преисполнился, что как будто бы уже и не человек
>>225922441>>225922429>>2259222993 человека не способны даже понять условия задачи. Вот так и выглядят собесы
>>225922421Это правильный ответ.Вопрос 3: Существует таблица сотрудников. В этой таблице есть определенный набор полей (больше 5), включая их зарплату. Требуется одним запросом найти сотрудников находящихся на предпоследнем месте по максимальной зарплате.
>>225922528Постгрю, Мс прочту. Оракл не трогал, майскл тоже. Так что вопросы будут только по чистому диалекту SQL, который есть во всех ЯП.
02/08/20 Вск 01:55:34 №2259223097>>225922241Синиор sql девелопер.Аноним 02/08/20 Вск 01:55:41 №2259223188Опять оп-хуй хочет чтобы двач сделал за него дз.Аноним 02/08/20 Вск 01:56:07 №2259223359Сейчас бы с /б/ыдлача на галеру набирать, ага...Аноним 02/08/20 Вск 01:58:06 №22592242110>>225922085Select * from table where salary = (select max(salary) from table)>>225922499 Аноним 02/08/20 Вск 01:58:15 №22592242911>>225922085SELECT MAX(salary) FROM employees>>225922485 Аноним 02/08/20 Вск 01:58:16 №22592243012>>225922241вижу себя в прошлой жизни монахом, который, блять, настолько преисполнился, что как будто бы уже и не человекАноним 02/08/20 Вск 01:58:27 №22592244113>>225922085SELECT MAX зп FROM таблицаНу или что-нибудь такое.Мимофронтендер>>225922485 Аноним 02/08/20 Вск 01:59:11 №22592248114>>225922241Твоей матер>>225922024 (OP) (OP)Аноним 02/08/20 Вск 01:59:17 №22592248515>>225922441>>225922429>>2259222993 человека не способны даже понять условия задачи. Вот так и выглядят собесыАноним 02/08/20 Вск 01:59:31 №22592249916>>225922421Это правильный ответ.Вопрос 3: Существует таблица сотрудников. В этой таблице есть определенный набор полей (больше
02/08/20 Вск 01:55:34 №2259223097>>225922241Синиор sql девелопер.Аноним 02/08/20 Вск 01:55:41 №2259223188Опять оп-хуй хочет чтобы двач сделал за него дз.Аноним 02/08/20 Вск 01:56:07 №2259223359Сейчас бы с /б/ыдлача на галеру набирать, ага...Аноним 02/08/20 Вск 01:58:06 №22592242110>>225922085Select * from table where salary = (select max(salary) from table)>>225922499 Аноним 02/08/20 Вск 01:58:15 №22592242911>>225922085SELECT MAX(salary) FROM employees>>225922485 Аноним 02/08/20 Вск 01:58:16 №22592243012>>225922241вижу себя в прошлой жизни монахом, который, блять, настолько преисполнился, что как будто бы уже и не человекАноним 02/08/20 Вск 01:58:27 №22592244113>>225922085SELECT MAX зп FROM таблицаНу или что-нибудь такое.Мимофронтендер>>225922485 Аноним 02/08/20 Вск 01:59:11 №22592248114>>225922241Твоей матер>>225922024 (OP) (OP)Аноним 02/08/20 Вск 01:59:17 №22592248515>>225922441>>225922429>>2259222993 человека не способны даже понять условия задачи. Вот так и выглядят собесыАноним 02/08/20 Вск 01:59:31 №22592249916>>225922421Это правильный ответ.Вопрос 3: Существует таблица сотрудников. В этой таблице есть определенный набор полей (больше
>>225922485Ну тогда как тебе такой вариант?https://stackoverflow.com/questions/612231/how-can-i-select-rows-with-maxcolumn-value-distinct-by-another-column-in-sql
>>225922499Select * from table where salary = (select max(salary) from table where salare<>(select max(salary) from table where))
>>225922485я так чисто покекать написал, вообще я и так зарабатываю 340к и мне нассать на твои хуево сформулированные задачи (>>225922299 кун)
>>225922724Это правильный ответ.Вопрос 4: Существует таблица сотрудников. В этой таблице есть определенный набор полей (больше 5), включая их зарплату. Требуется одним запросом найти сотрудников находящихся на переданном в переменную месте по максимальной зарплате.
>>225922499Select * from table where salary = (select distinct(salary) s from table order by s desc offset 1 limit 1)
>>225922774Напиздел. Ответ не правильный. Это был не предпоследний, а предпервый. Сука. Ответ не зачтен.
>>225922815Тогда вернуть в первом запросе значение зп MAX-1 и вложить в другой запрос, где выбрать всех с такой зряплатой
>>225922499Это же хуйня. Зачем делать внутри MAX??SELECT * FROM employees ORDER BY salary DESC LIMIT 1;
>>225922024 (OP)>SQLДа вы за ебали. Я же вам писал уже. SQL - прошлый век.На данный момент имею право на жизнь всего две концепции - неудаляемый SQL с выстрой выборкой, как ClickHouse, и NoSQL, типо монги, редиса камня и т.д. Ноудискас.>ЗП 65-160кРубли себе в жопу засуньМимо ведущий CSS-архитектор джун
>>225923222всм>>225923241чмо сделаю offset 1 и потом limit 1Это тебе дали на интервью и ты пытаешься выехать за счет дваща?
>>225923352>Мимо ведущий CSS-архитекторЯ, кстати, видел подобную вакансию вживую, лол.Финская почта вроде искала.
>>225923457Тебя хуями кормит не ОП. ОП у нас настолько светило IT, что даже в галку не может, что дает простор для маняпуляций тредом.
>>225922774DECLARE @place int = 5SELECT * FROM table GROUP BY salary ORDER BY salary DESC LIMIT @place, 1
>>225923652CREATE TABLE Employees ( id INT, salary DECIMAL);INSERT INTO Employees (id, salary) VALUES (1, 40000);INSERT INTO Employees (id, salary) VALUES (2, 100000);INSERT INTO Employees (id, salary) VALUES (3, 50000);INSERT INTO Employees (id, salary) VALUES (4, 400000);INSERT INTO Employees (id, salary) VALUES (5, 500000);INSERT INTO Employees (id, salary) VALUES (6, 203000);INSERT INTO Employees (id, salary) VALUES (7, 500000);INSERT INTO Employees (id, salary) VALUES (8, 609000);INSERT INTO Employees (id, salary) VALUES (9, 10000);INSERT INTO Employees (id, salary) VALUES (10, 500000);SELECT * FROM Employees ORDER BY salary DESC LIMIT 2 OFFSET 1;Выполни и покажи скрин, зай. Если там будет не две строчки на выходе, ты пойдешь сосать хуи у спидозных шлюх.
>>225922774select * from table where salary =(select min (select distinct(salary) from table order by salary desc limit n))
>>225922085Тут ктото пиздоболил пок-пок не читают условие задачи.так вот ответом будет >select * from employeesпотому что найти сотрудников с максимальной зарплатой. Это все неинтересно, давай про тайплевел и идрис
>>225923941Правильно. А в рабочем запросе должно быть 3 строки. Потому что у него 3 сотрудника с зп 500 000.
>>225923941Потому что у него в запросе 2 строки, а не 3, ему даже не доверяют пососать хуи спидозным шлюхам.
>>225923998Точно там же слово from обязательно. Вот такое пройдет?select * from table where salary =(select min(salary) from(select distinct(salary) from table order by salary desc limit n))
>>225924128Понял. Тогда в чём проблема запрашивать следующий запрос, с повышенными оффсет и лимит на один, пока не изменится салари, после чего вывести всю хуйню?
>>225924115Нет. У тебя он все равно не сработает. Предположим у тебя запросили чуваков, которые находятся на 7 месте в списке по максимальной зп. Но у вас на фирме сотрудников всего 5 штук. Что будешь делать?
>>225924170> найти сотрудниковЭто значит, что штук больше 1го может быть.>>225924189В том, что даже человек, который спамил подзапрос в подзапросе, сделал это более гуманным методом, чем ты предлагаешь сейчас.
>>225924277>В том, что даже человек, который спамил подзапрос в подзапросе, сделал это более гуманным методом, чем ты предлагаешь сейчас.И в чём, не гуманность заключается?
>>225922774select t1.* from Employees t1join (select salary, row_number() over(ORDER BY salary) from (SELECT salary FROM Employees group BY salary) t offset 3 limit 1) t2 on t1.salary=t2.salary;
>>225924346Точнее:select t1.* from Employees t1join (select salary, row_number() over(ORDER BY salary) from (SELECT salary FROM Employees group BY salary) t offset N-1 limit 1) t2 on t1.salary=t2.salary;где N - переменная.
>>225924370Это ты как определил? Для того, чтоб такую хуйню заявлять, нужны чёткие замеры. + случаи бывают разные, для некоторых задач мой способ будет быстрее, для других, другие способы будут быстрее.А ещё моим методом можно выводить данные риал тайм.
>>225924394Это делается проще, но похоже на правду.Вопрос 5: Существует таблица сотрудников. В этой таблице есть определенный набор полей (больше 5), включая их зарплату. Требуется одним запросом вывести все поля из таблицы сотрудников у сотрудников с максимальной ЗП. Не используя подзапросы, оконные функции и cte.
>>225922024 (OP)Айти агенство исключительно из двачеров, проигрываю от одного только представления этой конторы
>>решать посреди ночи домашку студента, который спохватился в последний моментОп пиздуй на фриланс биржу. Там тебе всё сделают за 500р
>>225924788Он просто понял, что все это время был не прав перед анонами и хочет привести двач к лучшему более светлому будущему.
>>225924725Реши эту студенческую задачу, если считаешь, что она студенческая. Будь мужиком.>>225924547
>>225924861> такими базовыми знаниями достаточно обладатьТакие знания выветриваются очень быстро, если их не юзать постоянно. Инфа 146% что кодеры занимаются другой хуйней на работе.
>>225924861Задачи усложняются. 50к стоит чувак, знающий ответ на эту задачу>>225924547Конечно, это только запросы на группировку. Есть ещё перечень вопросов, которые он должен знать. И к которым мы обязательно перейдем, если кто-то решит задачу выше.
>>225924843>абу>двач к лучшему более светлому будущемуОру, светлое будущее у макаки может быть только на фоне всеобщего упадка или относительно себя же в худшие периоды.Типо периода сопли например.
>>225925066Просто он ещё не набрал нормальных скульщиков. Поэтому в постах есть ограничение на картинки и тому подобное.
Задачки это же скука, давайте обсудим будни ынтерпрайз-хуиты.На хранилище каждый день рассчитывается таблица фактов, где суммарный объем таблицы 1тб, а дельта каждый день генерируется на 50гб пару раз в день.Исходная база оракл, целевая база оракл, dblink'и исключаем.Как организовать загрузку, поддержание таблицы в актуальном виде без создания перерывов? Какой бы инструментарий использовали?
>>225925074>>225923998Так будет работать?select * from table where salary =(select salary from(select distinct(salary), row_number() as row from table order by salary desc)where row = n )
>>225925074WITH cte AS(SELECT id, salary, DENSE_RANK() OVER(ORDER BY salary ASC) rnFROM Employees)SELECT *FROM cte WHERE rn = 7
>>225922024 (OP)АноныЕсть тут шарящие в БД выше CRUD?Накидайте материалов для освоения "профы" Архитектор БазМне интересна в первую очередь теория создания эффективных баз данных и математическая основа(что конкретно нужно знать)чая
>>225925301>Informatica PowerCenterА че процедура, построчно чтоли вливать? Это же долго и ебуче. А в bulkload оракловский этот ETL инструмент умеет?>>225925414Расскажи че там за 4, 5 и 6 нормальные формы. Если не знаешь, это примерно то что тебе нужно. Надо знать че такое кортеж, че там за начала были, реляционная тема, хуе-мое. CAP, ACID — если не знаешь то узнай, и узнаешь что нужно узнать.Но это все базисы, ну такие, имхо реальная тема это шарить как дрочить эту хуйню, в плане оптимизации, планы там вникать, индексы-партиции туда-сюда шурукать, статистики считать. Хотя это вроде на изич идеи, если есть необходимость.
>>225925497>Есть. Сколько лямку держишь?Да так, чисто для себя писал на петухоне и си свои велосипеды, пиликал сайты на джанго в продакшен. Могу Postgre развернуть. Вопрос чисто за академические знания, это пока что больше для себя. Думаю потяну или нет, и стоит ли осваивать такую специфичную профессию.
>>225924547SELECT distinct t1.*FROM Employees t1, Employees t2group by t1.id, t1.salaryhaving t1.salary>max(t2.salary)-1
>>225922024 (OP)Должности и звания на данной работе я так понимаю тоже будут двачерские, от младшего карасика типо подсобника до истинного анонимуса, зп 65-160к в зависимости от скила масти и уровня всратости по 10 бальной шкале, все споры и предложения по работе решаются рулеточкой на дабл думаю на трипл делаю
>>225925674зачем построчно? в процедуре мердж. так удобнее применять пришедшую дельту в таргетовую таблицуэтот инструмент умеет bulk insert мало того, там куча настроек для сессии на быструю вставку в том числе расстановка количества строк между коммитами, buffer block size и т.п. для тонкой настройки вставок
Если бы у меня были задачи на мускул, я бы его знал, как маньяк свое дело. А ОП хочет на двоще найти голодного маньяка или хантнуть его.
>>225925672>Какие именно БД интересуют?NoSQL, из-за этого сложность в понимании необходимого базиса, в частности математического, так как одно дело классическая алгебра с взаимосвязью сущностей, а другое дело NoSql не имеющая привязки к какому то конкретному типу логики, т.к поле тут непаханное. Так что от ацид тут не стартанешь.
>>225923352ты даже не разобрался в вопросе, зачем опу нужен sql разработчик, а уже семенишь своим nosql и прочим дерьмом, как такого дауна взяли даже джуном на такую должность?
>>225922774Передаю хуй тебе в жопу. Научись выражать мысли. А по сути - group by и having тебе в помощь, студота
>>225925965в NoSQL выбор очень большой, все зависит от конкретных задач, есть всякие elasticsearch, sphinx и т.п. если нужен быстрый поиск инф, но без гарантий целосности, или mongo db документоориентированная, или кликхаус для датамайнинга. И из за этого опять же непонятно, что тебя конкретно интересует
>>225926120работает, но тут вопрос в эффективности данного запроса, выглядит так что работает на уровне того же самого что и вложенный подзапрос, если не хуже нужно кончено explain сделать посмотреть
>>225926195Не работает. Выполни. Сколько строк дало? В задаче указано, что в табле 5 полей. Введи ещё 3 и выполни запрос.
>>225925706Это вообще дрочево ебучее, побереги вкус, ты правда хочешь заниматься тухлейшей хуйней? Я вот sql в начале вообще не уважал, говнище какое-то тухлое. Так и оказалось, но зато тема отлаженная, привычная, так что жить еще будет.>>225925410>>225925762Ну конечно это сработает с одной таблицей, однако в случае если данные рассчитываются одномоментно, их лучше грузить пачкой, а не по сообщениям-доходягам.Все таки очереди это про онлайн, а если таблиц таких дохуя, и процессинг предполагается батчевым?>>225925933Типо закачал данные в стейдж, оттуда залил в темповую таблицу через bulk insert (хз, это наверное то, это самый быстрый способ загрузить говно в оракл с диска, в обход всего почти).И вот загрузили дельту в таблицу, делаем мердж... Бля, но чет хуево, почему? Почему план предлагает неоптимальный путь (где красное)? Что не хватает чтобы план как на зеленом был?
>>225922024 (OP)кому-то скинули тестовое задание до собеседования и его решает анон, а не соискатель на должность
>>225926124Я имел ввиду не используемые уже готовые субд, а конкретно теорию построения таких бд и субд. Ну то есть я понимаю логику реляционных баз данных, но даже примерно зная теорию графов, я не понимаю отношения сущностей в nosql бд
>>225926395Ах да, кому интересно, хотел бы заметить, что я к ОПу не пойду потому что рассматриваю только выше чем указанный потолок, зато могу вас взять если вы можете ответить на вопросы ОПа))
>>225924189>с повышенными оффсет и лимит на один, пока не изменится салари, после чего вывести всю хуйню?
>>225926459Понял, тогда тебе нужна дискретная математика + структуры данных например с ходу напрашивается b-tree
>>225926395нет, все не так. причем тут темповая таблица? информатикой bulk insert в таблицу стейджа льем изменения. это самый быстый способ доставить их на другой сервер и вставить. далее запускам процедуру применения этих изменений из стейджа в целевую таблицу. после успешного применения изменений, очищаем стэйдж. никаких красных пятен. все быстро и четко на озвученных тобой объемах, инфа сотка
>>225926538Не будет. WITH Employees AS( SELECT 3 id, 'b' vasya, 500 salaryUNION ALLSELECT 2 id, 'a' vasya, 600 salaryUNION ALLSELECT 3 id, 'b' vasya, 600.0001 salary)SELECT t1.*FROM Employees t1, Employees t2group by t1.id, t1.vasya, t1.salaryhaving t1.salary>max(t2.salary)-0.001
>>225926588Ну, в общем это так. Просто такой момент хотел обсудить, вот на скриншотах что я привел, сначала из etl стейджа льем в таблицу _INC быстрым путем, и оттуда мерджим. Но если так просто, то часто получалась хуйня. И получалась она потому, что я забыл как мне чел рассказывал что надо расчет статистики делать, иначе оптимизатор запроса думает что там мало записей — а их миллионы, и пытается по индексу записи искать в цикле, ну короче по плану понятно. Я вообще день только с этим ебался, но нюхнул просветления.Вот по приложенному плану видно, что делать hash join с full access по обоим таблицам в несколько раз эффективнее чем по индексу тягать. Каким образом для операции merge в стейдже ты поймешь какие записи надо инсертить, а какие апдейтить? Это придется обращаться к индексу как минимум для каждой записи.Да, для объемов что я сказал на это примерно похуй, но если дальше, то все ощутимее.
>>225925888Не понимаю, почему ты не поставил =, но ладно.Вопрос 6: Существует таблица сотрудников. В этой таблице есть определенный набор полей (больше 5), включая их зарплату. Требуется одним запросом вывести на mssql все поля из таблицы сотрудников у сотрудников с максимальной ЗП. Не используя подзапросы, сte, джоины, перечисления таблиц.
Нахуй ваш скуль, когда давно есть полноценные универсальные ORM на любом яп, где искаропки решаются задачи опа лучшими методами под любую базу, а если решения орм вас не устраивает, то всегда можно сделать пулреквест. Пинают труп, идиоты.
>>225926940нужно регулярно обновлять статистики по полям, по которым выполняется поиск (например, по которым ты выполняешь сравнение в мердж), это влияет на план выполнения запроса.кроме того твоя таргетовая йоба-таблица в целый тэр. там должны быть партиции по периодам например, ты ограничиваешь в условии мерджа этот период и получаешь не фулскан всего тэра, а только отдельной партиции. если партиций там нет, то их надо сделать, иначе любое обращение к ней будет приводить к фулскану
Щас бы за 50к в Москве работать SQL-щиком, ммм.мимо постгресовый ДБА с двумя годами стажа из Мухосрани с зп в 100к
>>225927304На деньги сэкономленные после увольнения скульдебилов можно накупить столько мощностей, что никакие оптимизации будут не нужны. Железо и его аренда сейчас стоят сущие копейки и вам не нужно держаться за них, как за скульдебила, а-то наберут и потом боятся уволить, ведь хуй кто разберёт что он там имел ввиду в своих запросах.
>>225926969Как насчет select top <тут каким-то раком вычисляем сколько их> *from tableorder by salaryНу, в этом направлении?)))