Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Есть таблица продаж, следующего вида: Дата , Склад, Товар, Сумма Нужно запросом получить Первые десять товаров, которые приняли наибольшее участие в выручке каждого дня - и так по каждому складу. Первый сюприз для меня был в невозможности использование подзапросов в секции FROM. Второй - в невозможности использовать несколько MULTISET. Раньше лазил через ODBC-драйвер - особых проблем не возникало (понятно почему), теперь пытаюсь получить информацию через JDBC - и с "родными" запросами получается не так гладко. Пока вот что накрутил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 21:44 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Я бы для данного запроса написал бы хранимую процедурку... Не очень представляю как вы в рамках обычного sql будете выбирать первые 10 суммарных значений по каждому складу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 09:13 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Артур.Не очень представляю как вы в рамках обычного sql будете выбирать первые 10 суммарных значений по каждому складу...Написать-то такой запрос - не проблема. Порблема - просадка производительности, вызванная такого рода запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 09:33 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Я не уверен - позволит ли INFORMIX корреляцию в MULTISET. Вот и обращаюсь за помощью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 10:32 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringer Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. напишите GROUP BY t_from, t_date,t_kod,4 ORDER BY 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 11:06 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Если пойти на компромисс, и задать постоянное количество складов, то можно попытаться обойтись банальным UNION-ом, но хочется же по уму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 11:55 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Это олап. Информикс не умеет олап, заваривать чай и бегать за пивом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 12:40 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Не понял Где Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 13:10 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
2 Журавлев Денис Да какой же это ОЛАП... Я не пробовал, но схема запроса, скажем, в ORACLE мне ясна. 2 АнатоЛой Так не дошёл я до этого вообще. В сервер INFORMIX-а влезать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 13:24 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Что-то совсем всё невесело. Код: plaintext Код: plaintext Код: plaintext Что ж делать-то??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 13:51 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerЧто-то совсем всё невесело. Код: plaintext Код: plaintext Код: plaintext Что ж делать-то??? если б вы сделали тест, всем было бы легче вам помогать. в GROUP BY должен быть включен на самом деле не весь столбец, а та составляющая, которая не является агрегатом - это поле mySUM т.е. если вы напишите так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 14:36 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Как бы там не было - это лишь полумера - мне же нужно по всем складам за последние тридцать дней (за каждую дату). Если INFORMIX такого не может (одним запросом) - тады ой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 14:42 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Бабичев Сергей Артур.Не очень представляю как вы в рамках обычного sql будете выбирать первые 10 суммарных значений по каждому складу...Написать-то такой запрос - не проблема. Порблема - просадка производительности, вызванная такого рода запросом Ну так подскажите, а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 15:44 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Ладно, чёрт с ними, со складами - пропишу руками. Ну а хотя бы по датом такое можно нарисовать? Скажем - за десять последних.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 16:21 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Вопрос, а что собственно мешает ХП написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 17:41 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Сервер и вся информационная система находится на обслуживании. Когда мы просили предоставить возможность хотя бы просто читать инфу - было много охов и ахов. Если я вылезу с просьбами о хранимках и прочем - они начнут бросаться заявлениями "Снимаем с себя всю ответственность!". А на это никто не пойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 17:53 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerКак бы там не было - это лишь полумера - мне же нужно по всем складам за последние тридцать дней (за каждую дату). Если INFORMIX такого не может (одним запросом) - тады ой. А почему обязательно одним запросом ? В Инфоримксе есть прекрасное средство - временные таблицы. Сделайте сначала выборку туда, а затем выполняйте все необходимые операции. Если данных много - можно даже индекс построить. И работать будет быстрее с временной таблицей. И ухаживать за ними особо не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 20:41 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerЕсть таблица продаж, следующего вида: Дата , Склад, Товар, Сумма Нужно запросом получить Первые десять товаров, которые приняли наибольшее участие в выручке каждого дня - и так по каждому складу. Первый сюприз для меня был в невозможности использование подзапросов в секции FROM. Второй - в невозможности использовать несколько MULTISET. Раньше лазил через ODBC-драйвер - особых проблем не возникало (понятно почему), теперь пытаюсь получить информацию через JDBC - и с "родными" запросами получается не так гладко. Пока вот что накрутил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 1. create view mySUM as SELECT t_from AS myStore, t_date AS myDATE, t_kod AS TOV, Sum(t_sum) AS mySUM FROM s_total WHERE t_date BETWEEN (TODAY - 31 UNITS DAY) AND (TODAY) GROUP BY t_from, t_date 2. select a.myStore, a.myDate, a.TOV, a.mySum from mySum A where (select count(*) from mySum B where a.myStore = b.myStore and a.myDate = b.myDate and a.mySum < b.mySum) < 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 22:07 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
2 Выбегалло На самом деле - исходная таблица такова, что полностью соответсвует первому пункту. Второй же мне пока не осилить - 10 минут уже медитирую. Осталось только попытаться, если сработает - просто нет слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 22:21 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Понял. Но такого бы я не выдумал - это INFORMIX к такому толкает? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 22:24 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerНу так подскажите, а? Вот тебе вариант реализации под Oracle, но с использованием конструкций, совместимых с ANSI SQL-92: Код: 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. Informix я в глаза не видел, но судя по краткому прочтению нескольких топиков, решение примет примерно такой вид (если ошибся где-то в синтаксисе, то пусть местные корифеи подправят меня): Код: 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. Но хочу предупредить, что данный запрос относится к так называемым slow-by-slow алгоритмам, скорость и объем работы которых оставляет желать лучшего... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 07:01 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Спасибо, господа. Наверняка теперь к чему-нибудь приду. Хочу сказать, что "slow-by-slow" - это не то слово... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 11:03 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerПонял. Но такого бы я не выдумал - это INFORMIX к такому толкает? ;) Когда не было всяких рюшечек типа "FIRST 10" то это был стандартный способ для выборки в стандартном запросе нужного количества строк (без использования процедуры). Хотя на самом деле, такое изящество нужно было крайне редко. У нас, например, много лет назад использовалось в одном из тестов по SQL, но так как почти никто не отвечал на этот вопрос, то пришлось его исключить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 11:54 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
2 Бабичев Сергей Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 12:04 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringer2 Бабичев Сергей Код: plaintext Про нечисловую природу кода - не понял. А что, в Informix-е строки сравнивать между собой нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 12:43 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=34871098&tid=1608276]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 264ms |
| total: | 445ms |

| 0 / 0 |
