Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
Используя входные данные провести ABC анализ для всех позиций в разрезе Год (YEAR), STORE_FORMAT, CATEGORY используя показатель оборот в рублях, оборот в штуках, поделив на 3 категории: 85 % - A 10 % - B 5 % - C :Должно получиться вроде этого Код: plsql 1. 2. 3. Мой запрос на данный момент выглядит так: :запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. У меня сомнения на счет того, что я верно действую в операторе case . И не переборщил ли я с группировкой? Быть может кто подскажет как такую задачу решить другим путем? Не исключаю, что мой вариант - ахинея) Помогите плиз люди бывалые! P.S. исходные данные таблиц прикрепил во вложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 20:16 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
Rust_CohleУ меня сомнения на счет того, что я верно действую в операторе case . Правильные сомнения. Разумнее создать таблицу соответствия процент-категория. Rust_Cohleне переборщил ли я с группировкой?Переборщил... теоретически ты можешь получить в запросе несколько полностью идентичных строк, что для группировки в общем странно... убери оттуда последние 2 поля. Или строго обоснуй их присутствие там. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 23:13 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
AkinaРазумнее создать таблицу соответствия процент-категория. Подскажите пожалуйста поподробнее, как это делается. Пока непонятно( AkinaПереборщил... теоретически ты можешь получить в запросе несколько полностью идентичных строк, что для группировки в общем странно... убери оттуда последние 2 поля. Или строго обоснуй их присутствие там. А если я уберу из группировки последние 2 поля, то запрос сразу сломается. Я ведь в кейсе использую их оба, и скорее всего неверно. Ошибка что то вроде - данные поля не используются ни 1 в агрегатной функции. Как обойти этот момент правильной реализацией? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2016, 11:06 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
Посмотрел ещё раз. Попристальнее. Ваще бред оказался. Во-первых, выпал диапазон от 10 до 85 процентов. Совсем. Во-вторых, расчёт процента-то идёт от общей суммы. Т.е. имеем два уровня группировки - сумма по группе и сумма отдельной записи. В рамках одного запроса это не реализуется - т.е. должен быть подзапрос, считающий итоговые суммы: Код: sql 1. 2. 3. его связываем с основным и считаем проценты: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2016, 14:00 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
Ну а кейс уже как-нить самостоятельно прикрути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2016, 14:01 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
а еще совсем нубский вопрос) как мне из поля month содержащие значения вида (201501, 201602) корректно вернуть только год?Тут же нет разделителей, цельный интежер. Не оракловыми средствами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2016, 16:50 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
Rust_Cohle , LEFT(month,4) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2016, 17:28 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
Akina, Спасибо, вы просто бог sql-я!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2016, 17:31 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
Akina Rust_Cohle , LEFT(month,4) Тогда возникает следующий вопрос - как далее проводить группировку дабы все 201501 и 201502 попали в одну группу. По синониму же это делать нельзя. Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2016, 17:41 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
Rust_CohleПо синониму же это делать нельзя. В mysql можно. В других СУБД - по тому же самому выражению Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2016, 17:47 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
AkinaВо-вторых, расчёт процента-то идёт от общей суммы. Т.е. имеем два уровня группировки - сумма по группе и сумма отдельной записи. В рамках одного запроса это не реализуется - т.е. должен быть подзапрос, считающий итоговые суммы: Код: sql 1. 2. 3. его связываем с основным и считаем проценты: Код: sql 1. 2. 3. Блин чёт не соображу как доварить этот запрос. У меня выходит вот что: : беда Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Я может неверно делаю этот подзапрос. Куда его надо запихнуть? И могу ли я, указав синонимы, использовать их для деления в кейсе? При выполнении ругается так - Столбец "sale.SALES_QNTY" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY. Столбец "sq.total_kolvo" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2016, 14:05 |
|
||
|
Интересная задача, споткнулся с case-ом, help
|
|||
|---|---|---|---|
|
#18+
Понял, что группировка по оборотам должна быть на уровень выше, то есть не включая конкретный продукт. Попытался этот подзапрос запихнуть в КЕЙС. Но все равно неправильно. Ошибка следующего вида. Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =, !=, <, <=, >, >= или используется в качестве выражения. : Запрос_обновленный Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2016, 14:12 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=84&tid=1831103]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 363ms |

| 0 / 0 |
