[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тестовое задание - помогите выполнить
Страницы: 1, 2, 3, 4, 5, 6, 7
aRpi
Здравствуйте!

ЗАДАЧА:
Подскажите как привольно выполнить тестовое задание.
В общих словах хотябы!!!

ПРОБЛЕМА:
Прислали мне тестовое задание, Выполнил, Говорят, недостаточно хорошо.

ВОПРОС:
В чем может быть проблема?

ЗАДАНИЕ:
Есть таблица курсов валют за каждый день. Написать SQL запрос который выберет текущий курс для каждой валюты.

date currency rate
2012-01-01 USD 30,1
2012-01-01 EUR 40,1
2012-01-02 USD 29,7
2012-01-02 EUR 40,6
2012-01-03 USD 29,9
2012-01-03 EUR 40,3
2012-01-31 USD 30
2012-02-01 USD 29

Результатом запроса должен быть:

USD 29
EUR 40,3


ВОТ КАК Я ЕГО РЕШИЛ (прям так и написал в ответе):
select `currency`, `rate` FROM `test`.`data` WHERE `data` = '2012-01-02'

база: test
таблица: data
текущая дата: 2012-01-02

CREATE TABLE `data` (
`data` VARCHAR(10) NULL DEFAULT NULL,
`currency` VARCHAR(10) NULL DEFAULT NULL,
`rate` FLOAT NULL DEFAULT NULL
)
COLLATE='cp1251_general_ci'
ENGINE=MyISAM;


ЧТО НЕ ТАК?
Как такое тестовое задание решается?
Может надо как запрос оптимизировать?
Valick
1) указывая конкретную дату вы каждый день будете переписывать запрос?
2) в течение дня курс может меняться, и в этом случае ваш запрос сядет на попу ровно. (но это уже не к вам вопрос, а к тому кто его задавал, почему тип поля date когда должен быть datetime или timestamp)
ну и в конце концов, тестовое задание для вас, и если вы сами не видите своих ошибок, то значит тест не прошли.
___
о ужас там вообще varchar

_____________
Стимулятор ~yoomoney - 41001303250491
aRpi
Ну что бы его пройти нужно понять почему не прошел...
Valick
я вам написал 2 пункта, запрос нужно исправить с учетом этих пунктов, а точнее пункта номер 2, а пункт номер 1 получится сам по себе
просто забейте на тип поля и решайте задачу как будто там дата timestamp
хотя с varchar трудно будет найти максимум smile.gif
но это уже повторюсь вопрос к тому кто составлял тестовое задание, нельзя требовать правильного решения коли у самих рыло в пушку smile.gif

_____________
Стимулятор ~yoomoney - 41001303250491
zelenin
1. вы опечатались при создании таблицы data->date (огрехи в виде неправильных типов ячеек и кодировки 1251 не учитываем)
2. Запрос должен выбирать не курс за определенную дату, "текущий курс для каждой валюты".
у вас даже в подсказке есть ответ:
2012-01-03 EUR 40,3
2012-02-01 USD 29
а ваш запрос что выдаст?
Valick
Цитата
2012-01-03 EUR 40,3

это из будущего?
по заданию текущая дата: 2012-01-02
скорее всего вы правы, опечатки присутствуют и их гораздо больше одной
посмотрел внимательнее даты и то что должно получиться, "занимательная математика" однако smile.gif
___
ТС вряд ли у вас задание в том виде в котором вы его представили, а если такое то, посылайте куда подальше вашего тестовика, пусть сам идет на курсы "кройки и шитья"
__
покажите ТЗ слово в слово, буква в букву, цифра в цифру

_____________
Стимулятор ~yoomoney - 41001303250491
Valick
Цитата
как привольно выполнить тестовое задание

ну это вообще бомба smile.gif


_____________
Стимулятор ~yoomoney - 41001303250491
aRpi
USD 29
EUR 40,3

- чет сам не пойму как получить такой результат
"текущий курс для каждой валюты"
- это курс на сегодняшний день?

EUR 40,3 - это 2012-01-03
USD 29 - это 2012-02-01
Valick
Цитата
"текущий курс для каждой валюты"
- это курс на сегодняшний день?

это курс на год, день, час, минуту и секунду

текущая дата: 2012-01-02 - это вы сами придумали? если да то

EUR 40,3 - это 2012-01-03
USD 29 - это 2012-02-01
совершенно правильный результат, для данной таблицы

_____________
Стимулятор ~yoomoney - 41001303250491
aRpi
Цитата (Valick @ 10.01.2013 - 09:14)
ТС вряд ли у вас задание в том виде в котором вы его представили, а если такое то, посылайте куда подальше вашего тестовика, пусть сам идет на курсы "кройки и шитья"


user posted image
Valick
значит текущую дату вы сами придумали, и более того таблицу в бд вы тоже сами придумали, и типы полей (неправильные) сами придумали
ну нельзя же так

_____________
Стимулятор ~yoomoney - 41001303250491
Hello
aRpi
У вас запрос выбирает только за 2012-01-02
Вам нужно было использовать NOW() вместо даты

Цитата (Valick @ 10.01.2013 - 07:50)
2) в течение дня курс может меняться

Курс устанавливает ЦБ один раз в день

_____________
VPS от 5$, первые 2 месяца - бесплатно.
Valick
Цитата
Курс устанавливает ЦБ один раз в день

точно? куда мир катится...
вот что по этому поводу думает Сбер Банк
Цитата
* Курсы обмена иностранных валют являются информативными и могут меняться в течение дня. Сведения о точных курсах обмена иностранных валют можно узнать по контактным телефонам структурных подразделений Сбербанка России.


Вам нужно было использовать NOW() вместо даты
мало чем поможет в данном случае
я бы попробовал GROUP BY по типу и MAX() по дате

_____________
Стимулятор ~yoomoney - 41001303250491
aRpi
Цитата (aRpi @ 10.01.2013 - 09:48)
значит текущую дату вы сами придумали, и более того таблицу в бд вы тоже сами придумали, и типы полей (неправильные) сами придумалину нельзя же так


Вобщем да - этот было решением задания....
Valick
Цитата
Вобщем да - этот было решением задания....

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

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.