[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тестовое задание - помогите выполнить
Страницы: 1, 2, 3, 4, 5, 6, 7
Oyeme
Цитата (Valick @ 10.01.2013 - 10:42)
Oyeme, тестили? судя по отсутствию обратных кавычек нет
можете не пробовать, не работает так как надо
могу даже рассказать почему не верно

Проверьте.Перед тем как писать ерунду.

П.С почитайте для чего нужны кавычки.

http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
Valick
проверил, результат не верный
2012-01-03 EUR 40.3
2012-01-03 USD 29.9

1) функция IN принимает данные перечисленные через запятую, вы же пхаете туда таблицу
2) вы никогда не угадаете какой будет результат при GROUP BY (это на счет последнего GROUP BY )
__
зачем нужны кавычки я прекрасно знаю, просто data с date попутал, во всем остальном милости прошу оправдаться smile.gif

_____________
Стимулятор ~yoomoney - 41001303250491
S.Chushkin
Цитата (Oyeme @ 10.01.2013 - 15:25)
Проверьте.Перед тем как писать ерунду.

А Вы забейтесь на ящик конька, что он не прав.
п.с.
Valick с тебя бутылка из этого ящика wink.gif

upd
Эх, не успел.
Valick, зря расжевал - а в друг он поспорил бы.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
killer8080
SELECT * 
FROM
(SELECT * FROM `currency` ORDER BY `date` DESC) AS `t`
GROUP BY `currency`
Oyeme
Цитата (Valick @ 10.01.2013 - 11:30)
проверил, результат не верный
2012-01-03  EUR  40.3
2012-01-03  USD  29.9

1) функция IN принимает данные перечисленные через запятую, вы же пхаете туда таблицу
2) вы никогда не угадаете какой будет результат при GROUP BY (это на счет последнего GROUP BY )
__
зачем нужны кавычки я прекрасно знаю, просто data с date попутал, во всем остальном милости прошу оправдаться :)

1.IN() syntax can also be used to write certain types of subqueries
http://dev.mysql.com/doc/refman/5.0/en/any...subqueries.html
Читаем.
2.
Для Вас dump.
INSERT INTO `data` VALUES ('2012-01-09', 'USD', 12);
INSERT INTO `data` VALUES ('2012-01-01', 'EUR', 13);
INSERT INTO `data` VALUES ('2012-01-02', 'USD', 14);
INSERT INTO `data` VALUES ('2012-01-05', 'EUR', 14);
INSERT INTO `data` VALUES ('2012-01-02', 'USD', 18);
INSERT INTO `data` VALUES ('2012-01-11', 'USD', 9);
INSERT INTO `data` VALUES ('2012-01-06', 'EUR', 147);


Каков ответ будет в этом случаи?

Michael
Цитата (S.Chushkin @ 10.01.2013 - 12:49)
Цитата (Valick @ 10.01.2013 - 14:20)
Возможно с union
что-то сильно сомневаюсь, поэтому даже не думал в этом направлении

Я тоже не уверен в большей эффективности, поэтому тестировать надо (на реальных данных).
А запрос элементарный:
(select * from table
where
currency= "usd" and date <= ...
order by date desc
limit
1)
union
(select * from table
where
currency= "eur" and date <= ...
order by date desc
limit
1)

laugh.gif

_____________
There never was a struggle in the soul of a good man that was not hard
Valick
2012-01-06 EUR 147
2013-03-10 USD 50
стоп не в ту таблицу проинсертил
5 сек

_____________
Стимулятор ~yoomoney - 41001303250491
S.Chushkin
Цитата (Valick @ 10.01.2013 - 15:30)
1) функция IN принимает данные перечисленные через запятую, вы же пхаете туда таблицу
2) вы никогда не угадаете какой будет результат при GROUP BY (это на счет последнего GROUP BY )

1) не прав
2) 100%
Кстати, если запрос Oyeme чуть поправить, то всё будет работать правильно (решение 2-го пункта). Но, думаю, он будет чуть менее эффективным, чем первый запрос (с max и join).

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Oyeme
Цитата (Valick @ 10.01.2013 - 11:44)
2012-01-06 EUR 147
2013-03-10 USD 50

Откуда Вы взяли USD 50 ?

Ответ:

2012-01-06 EUR 147
2012-01-11 USD 9

Что и выдает запрос.

Valick
S.Chushkin, на счет первого могу ошибаться, но раньше IN работала только со строкой


_____________
Стимулятор ~yoomoney - 41001303250491
Michael
Oyeme, в твоем запросе надо не data IN, а (currency,data) IN соответственно и внутри.
И тогда все будет правильно.

_____________
There never was a struggle in the soul of a good man that was not hard
S.Chushkin
Цитата (Michael @ 10.01.2013 - 15:43)

laugh.gif

А зря смеётесь, я пару раз сталкивался, что решение с union работает на порядок быстрее, чем "красивый" запрос. И даже получал за такое "решение" денюшку wink.gif , ибо узкое место было.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Valick
Цитата
Что и выдает запрос.

потому что у вас нет в наборе одинаковых дат EUR и USD
или карта так легла, на счет GROUP BY я уверен
да и к чему это?
вы с набором из ТЗ получите правильный ответ по ТЗ

_____________
Стимулятор ~yoomoney - 41001303250491
Oyeme
В этом под-запросе Вы выбирает максимально ДАТЫ для каждой валюты.
Ничего поправлять Нинадо.
Все работает как надо.С самого начала.

	SELECT
MAX(DATE_FORMAT(data,"%Y-%m-%d"))
FROM data
GROUP BY currency


Если Вы хотите по времени то просто измените "%Y-%m-%d и добавьте сюда,минуты и секунды.
В здании нет минут и секунд.
Valick
Oyeme, в последнем GROUP результат непредсказуем, этого достаточно


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

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