Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
есть таблица куда скидывается цены по нескольким товарам, нужно узнать какое количество товаров подешевело а сколько подорожало, сравнивать надо две последних записи по каждому товару. namepricedtшарф122017-11-06 16:07:05шапка102017-11-06 16:07:05перчатки72017-11-06 16:07:05шарф112017-11-06 16:06:05шапка112017-11-06 16:06:05перчатки112017-11-06 16:06:05шарф102017-11-06 16:05:05шапка102017-11-06 16:05:05перчатки102017-11-06 16:05:05 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 17:01 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 19:23 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
все равно не понятно. научился проставлять номера, а как дальше? Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 22:57 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
Кое что получилось, но что то мне подсказывает что можно сократить Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 00:04 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
yarnikКое что получилосьОно точно решает исходную задачу yarnikнужно узнать какое количество товаров подешевело а сколько подорожало, сравнивать надо две последних записи по каждому товару? Не думаю. Максимум, что дает Ваш вариант - это две цены, но не улавливаю гарантии, что они будут именно из двух последних записей по товару. По задаче, насколько понимаю, надо сравнивать записи за 16:07:05 (последняя) и 16:06:05 (предпоследняя) и в итоге получить что-то вроде "один товар подорожал и два подешевело" (шарф подорожал, шапка и перчатки подешевели). У меня получилось так (решение "в лоб", без попыток оптимизации) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 01:52 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ. vkleОно точно решает исходную задачу? Не думаю. Максимум, что дает Ваш вариант - это две цены, но не улавливаю гарантии, что они будут именно из двух последних записей по товару. По задаче, насколько понимаю, надо сравнивать записи за 16:07:05 (последняя) и 16:06:05 (предпоследняя) и в итоге получить что-то вроде "один товар подорожал и два подешевело" (шарф подорожал, шапка и перчатки подешевели). Не полностью, но промежуточно. Мне по задаче и надо получить последних 2 цены и далее их сравнить. Последних - по дате (извините, что это не написал, думал это само собой понятно). А это 16:07:05 и 16:06:05 К сравнению я еще не дошел, поэтому и написал про кое-что как промежуточный вариант который выполняет первую часть задачи - выдает 2 цены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 09:24 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
Насчет промежуточного варианта понятно. :) Насчет выборки для сравнения двух последних дат таки ошибка есть. Вот это условие Код: sql 1. 2. не гарантирует, что будут выбраны для сравнения именно две последние даты, под него попадает так же пара первой и последней дат, первой и второй и множества промежуточных, если они будут. А группировка без агрегатной функции "отбросит лишнее" чуть ли не случайным образом. Как-то вот так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 10:33 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
И вот решение которое решает задачу. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Конечно я считаю чудом, что группировка прошла именно так, где tt1 максимально свежая запись и tt2 следующая за ней. Но ведь работает. Буду признателен за более правильное и логичное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 10:38 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
Откуда взялись столбцы tt1.rate и tt2.rate? В исходных данных их нет, в вычисляемых - тоже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 10:52 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
rate = price (извиняюсь, нет возможности редактировать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 11:27 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
yarnikБуду признателен за более правильное и логичное решение. Добавить в таблицу пару полей: Признак актуальной цены и Разность с предыдущей (актуальной) ценой )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 11:44 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
yarnik, исправлено ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 12:12 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
Что-то не так в датском королевстве. Простой тест дает один нуль: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. yarnikя считаю чудом, что группировка прошла именно так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 19:38 |
|
||
|
Как сравнить две последних записи
|
|||
|---|---|---|---|
|
#18+
не стоит смеяться, работает как на тесте http://sqlfiddle.com/#!9/e7ab7/1 так и у меня на сервере, правда на сервере время работы от 0,5 до 1,5 сек... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 15:25 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39550050&tid=1830282]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 156ms |

| 0 / 0 |
