View Full Version : Вопрос на засыпку
смешно
05-02-2013, 03:24 PM
мне тут задали вопрос на телефонном интервью, довольно неожиданный, но интересный. подумал 30 секунд и дал ответ, хотя вариантов ответа на него несколько. как оказалось, что мой ответ оказался самым интересным и самым правильным, никто до меня не давал такой ответ, после моего ответа мне перестали задавать технические вопросы и пригласили на face to face интервью. прикольное, что после интервью я погуглил интернет и не нашёл моего ответа. ЛОЛ
Oracle Database
вопрос:
Find second largest value in the column AMOUNT for TABLE A. надо составить query.
Good luck! вам даётся 30 секунд. :)
MariLi
05-02-2013, 03:29 PM
какой-нибудь макс вер меньше чем мах...
смешно
05-02-2013, 03:43 PM
lol, жду ответа.
MariLi
05-02-2013, 03:48 PM
lol, жду ответа.
ну да ... уже погуглила, есть такой...
не томи... колись :1:
смешно
05-02-2013, 03:49 PM
давай подождём что-бы остальные участники подумали. :)
MariLi
05-02-2013, 03:53 PM
ну давай... :)
я тоже на вступительном экзамене в универ задачку на мой манер решила, ни с кем ответ не сходился, даже запаниковала... а оказывается тоже правильно было, преподаватели удивились, но пятёрку поставили...
реднек
05-02-2013, 03:54 PM
мне тут задали вопрос на телефонном интервью, довольно неожиданный, но интересный. подумал 30 секунд и дал ответ, хотя вариантов ответа на него несколько. как оказалось, что мой ответ оказался самым интересным и самым правильным, никто до меня не давал такой ответ, после моего ответа мне перестали задавать технические вопросы и пригласили на face to face интервью. прикольное, что после интервью я погуглил интернет и не нашёл моего ответа. ЛОЛ
Oracle Database
вопрос:
Find second largest value in the column AMOUNT for TABLE A. надо составить query.
Good luck! вам даётся 30 секунд. :)
select * from (select * from a order by amount desc limit 2) order by amount asc limit 1
реднек
05-02-2013, 03:54 PM
Не проверял, первое что пришло в голову.
смешно
05-02-2013, 04:03 PM
а ты проверь, это первое, а второе допустим два или три самых largest has the same value, a надо найти second largest. т.е. 800 из этого примера. :)
1000
1000
1000
800
700
600
500
100
1
0.5
0
....
смешно
05-02-2013, 04:05 PM
блин какой я умный, даже сам не верю. :)
IggyPop
05-02-2013, 04:08 PM
а ты проверь, это первое, а второе допустим два или три самых largest has the same value, a надо найти second largest. т.е. 800 из этого примера. :)
1000
1000
1000
800
700
600
500
100
1
0.5
0
....
DISTINCT
реднек
05-02-2013, 04:08 PM
блин какой я умный, даже сам не верю. :)
selet * from A where AMOUNT < (select max(AMOUNT) from A) order desc limit 1
Опять не проверял
смешно
05-02-2013, 04:08 PM
ответ давай! конкретный.
реднек
05-02-2013, 04:14 PM
ответ давай! конкретный.
Ну проверил:
select * from A where AMOUNT < (select max(AMOUNT) from A) order by AMOUNT desc limit 1;
Нашло все правильно.
смешно
05-02-2013, 04:18 PM
Ну проверил:
select * from A where AMOUNT < (select max(AMOUNT) from A) order by AMOUNT desc limit 1;
Нашло все правильно.
да это работает, но есть ещё проще решение. моё решение. :)
лол, жду ответа.
минус 1
или- плюс один
в зависимости в какую сторону они ищут )
смешно
05-02-2013, 04:21 PM
минус 1
или- плюс один
в зависимости в какую сторону они ищут )
они не идут, на месте стоят. :)
COUNT еще нужен
лол.вы не ругайтесь
самой интересно стало
но сто лет не делал ничего подобногo
Baba_Yaga
05-02-2013, 04:22 PM
да это работает, но есть ещё проще решение. моё решение. :)
Смешно, ты оказывается не только самый богатый, но и самый умный! Одно не пойму: зачем миллионер на позицию софтвер девелопера иньервьюируется?
реднек
05-02-2013, 04:24 PM
То что оракл, это существенно?
они не идут, на месте стоят. :)
а следующий- на ступень выше или на ступень ниже?
если тебе не нравится, как они бегают
...неточня спецификация ))
пиши уже.мне лeнь тебя читать )
смешно
05-02-2013, 04:26 PM
ок. ответ будет завтра. дам возможность всем подумать. РедНек ответил правильно, но вопрос был найти конкретный amount, а не всё row.
смешно
05-02-2013, 04:28 PM
Смешно, ты оказывается не только самый богатый, но и самый умный! Одно не пойму: зачем миллионер на позицию софтвер девелопера иньервьюируется?
а мне интересно мозги иногда напрягать.
смешно
05-02-2013, 04:33 PM
какой-нибудь макс вер меньше чем мах...
на самом деле это очень точное определение. молодец.
плин
поверили
в интернете ответов- завались на эту тему ))))))))))
Вот что нашел на интернете:
SELECT * FROM table_name WHERE column_name IN (SELECT MAX(column_name) FROM table_name WHERE column_name <> (SELECT MAX(column_name) FROM table_name))
смешно
05-03-2013, 06:49 AM
ок. the simplest and most logical answer ( not related to any database):
select max(amount) from table A where amount != (select max(amount) from table A)
this one also will work:
select max(amount) from table A where amount < (select max(amount) from table A)
crazy-mike
05-03-2013, 07:18 AM
какой-нибудь макс вер меньше чем мах...
select max(a) from abc where a< (select max(a) from abc);
:111:
( бир микс Cuba Libre 6-градусное )
create table abc ( a integer primary key);
insert into abc values (9),(8),(7),(6),(5),(4),(3),(2),(1),(0);
select max(a) from abc where a< (select max(a) from abc);
:111:
( это Oracle MySQL 5.* )
crazy-mike
05-03-2013, 07:29 AM
Вот что нашел на интернете:
SELECT * FROM table_name WHERE column_name IN (SELECT MAX(column_name) FROM table_name WHERE column_name <> (SELECT MAX(column_name) FROM table_name))
лучше ничего там не ищи - опасно для психического здоровья. :111:
Miami Vice
05-03-2013, 07:40 AM
Смешно, ты оказывается не только самый богатый, но и самый умный! Одно не пойму: зачем миллионер на позицию софтвер девелопера иньервьюируется?
Это для него "и ещё буду немного шить ночью". :111:
реднек
05-03-2013, 08:11 AM
ок. the simplest and most logical answer ( not related to any database):
select max(amount) from table A where amount != (select max(amount) from table A)
this one also will work:
select max(amount) from table A where amount < (select max(amount) from table A)
Теперь буду знать как отвечать чтобы скипали телефонное. А то мурыжат почем зря.
смешно
05-03-2013, 08:44 PM
Теперь буду знать как отвечать чтобы скипали телефонное. А то мурыжат почем зря.
им сразу задай этот вопрос. Лол
MariLi
05-04-2013, 12:41 AM
:314:
Alex5448
05-04-2013, 09:39 AM
Хинди надо учить, не сиквел.
ок. the simplest and most logical answer ( not related to any database):
select max(amount) from table A where amount != (select max(amount) from table A)
this one also will work:
select max(amount) from table A where amount < (select max(amount) from table A)
Да, все просто, но ответ Реднека более техничен и универсален. Если попросят найти 3-й.... N-й по величине, то твой ответ обломится, а ответ Реднека - нет.
смешно
05-08-2013, 12:08 PM
Да, все просто, но ответ Реднека более техничен и универсален. Если попросят найти 3-й.... N-й по величине, то твой ответ обломится, а ответ Реднека - нет.
мой не обломится. подумай хорошо.
смешно
05-08-2013, 01:23 PM
Да, все просто, но ответ Реднека более техничен и универсален. Если попросят найти 3-й.... N-й по величине, то твой ответ обломится, а ответ Реднека - нет.
это вообще не будет работать если больше чем 2, нужна другая логика.
select * from A where AMOUNT < (select max(AMOUNT) from A) order by AMOUNT desc limit 1;
мой не обломится. подумай хорошо.
Это ты подумай хорошо, потому как твой вариант возвращает только второе максимальное значение.
Если будет стоять задача найти 5-ое максимальное значение, то облом.
смешно
05-09-2013, 12:42 PM
Это ты подумай хорошо, потому как твой вариант возвращает только второе максимальное значение.
Если будет стоять задача найти 5-ое максимальное значение, то облом.
для 5 надо добавить 4-ре раза < select max(amount) from table A
a для универсальности вот это будет самое правильное, где 20 заменяешь на любое максимальное значение.
SELECT MIN(amount) FROM (SELECT DISTINCT amount FROM TABLE A WHERE rownum <= 20 ORDER BY amount DESC) ;
Джентльмен
05-09-2013, 05:47 PM
а что будет если в таблице всего одна row?
или другой экстрим - несколько rows с максимальным значением - скажем "напечатать двоих самых старших сотрудников"?
а что будет если в таблице всего одна row?
или другой экстрим - несколько rows с максимальным значением - скажем "напечатать двоих самых старших сотрудников"?
Если одна строка, то поиск второго по величине значение вернет 0 строк.
А насчет второго твоего вопроса, я не очень понял в чем экстрим?
SELECT TOP 2 * FROM A ORDER BY AGE desc
смешно
05-10-2013, 02:17 PM
а что будет если в таблице всего одна row?
или другой экстрим - несколько rows с максимальным значением - скажем "напечатать двоих самых старших сотрудников"?
SELECT * FROM TABLE A WHERE rownum <= 2 ORDER BY DOB;