|
|
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
есть набор номеров строк, номера могут быть NULL, а также могут иметь пропуски нужно отсортировать, а вместо NULL в конце вывести по порядку я написал такое вот решение Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. кто-нибудь может оценить адекватность ? т.к. на этих данных норм, но я не уверен что на всех возможных данных ну и если кто придумает еще варианты, интересно посмотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 14:29 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
grok Код: plsql 1. Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 14:35 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
grok, в надежде что для over сортировать будет раз Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 09:39 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
Staxgrok, в надежде что для over сортировать будет раз Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ..... stax т.е. это будет быстрее ? (не могу так ценить на взгляд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 09:54 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
Elicgrok Код: plsql 1. Код: plsql 1. спасибо, как-то не подумал про row_number в таком виде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 09:54 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
grokт.е. это будет быстрее ?Не парься. Количество window-шагов в плане одинаково в обоих вариантах. Только один из вариантов читабельнее другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 11:04 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
sum(NVL2(a,0,1)) is a bit shorter than sum(case ...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 16:27 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
--Slightly modified solution (no need to use cumulative MAX function) with x(a) as ( select 1 from dual union all select 2 from dual union all select 4 from dual union all select 9 from dual union all select null from dual union all select null from dual union all select null from dual union all select null from dual union all select null from dual ) select nvl(a, max(a) over() + sum(NVL2(a,0,1)) over(order by a nulls last, rownum ) ) from x order by 1 --Another approach: with x(a) as ( select 1 from dual union all select 2 from dual union all select 4 from dual union all select 9 from dual union all select null from dual union all select null from dual union all select null from dual union all select null from dual union all select null from dual ) SELECT NVL(a,MAX(a)OVER()) + NVL2(a,0,ROW_NUMBER()OVER(ORDER BY a NULLS LAST)-COUNT(a)OVER()) b FROM x it is also doable with RECURSIVE CTE or MODEL clause ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 16:45 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
grok, Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 16:51 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, Чтоб совсем совпало Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 16:58 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
grok, Ну и если исключительно для сортировки, можно упростить до Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:06 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
MaximaXXLgrok, Ну и если исключительно для сортировки, можно упростить до Код: plsql 1. Код: plsql 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. .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:17 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
MaximaXXL Код: plsql 1. Инсинуация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:19 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
MaximaXXL Код: plsql 1. Поставь null-ы в начало, наивный чудак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:21 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
Stax, Так для сортировки жеж Код: plsql 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. Все прекрасно сортирует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:24 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
ElicMaximaXXL Код: plsql 1. Инсинуация. Я к тому что row_number() over (order by a nulls first) - пересортирует, или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:26 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
Похоже я жестко туплю, и не понял задачу до конца =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:32 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
MaximaXXLЯ к томуА я к тому, что ты не понял моего первоначального ответа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:35 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
ElicMaximaXXLЯ к томуА я к тому, что ты не понял моего первоначального ответа. я действительно не понял Код: plsql 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. .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:46 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
Stax, Я просто не до конца понял задачу, а Elic правильно предложил пересчитать сначала null по порядку и прибавить к max(a) значению в итоге будет: Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:55 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
StaxElicА я к тому, что ты не понял моего первоначального ответа.я действительно не понялНу так перечитай его внимательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:55 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, дя я знаю что от Elic-а удочка, а не рыба я ж ничего сразу не написал о его посте, мол сами догадайтесь что нужен еще nvl/decode/case у Elic-а две сортировки, поетому и дописал к своему варіанту "в надежде что для over сортировать будет раз" ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 08:18 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
Staxу Elic-а две сортировки, поетому и дописал к своему варіанту "в надежде что для over сортировать будет разWindow buffer- это не сортировка, и в варианте Elic-а этот шаг "поглощается" шагом window sort. Таким образом, сортировка будет одна, если не считать последнюю кляузу order by 1 после from. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 10:19 |
|
||
|
Задачка (аналитика)
|
|||
|---|---|---|---|
|
#18+
AmKadStaxу Elic-а две сортировки, поетому и дописал к своему варіанту "в надежде что для over сортировать будет разWindow buffer- это не сортировка, и в варианте Elic-а этот шаг "поглощается" шагом window sort. Таким образом, сортировка будет одна, если не считать последнюю кляузу order by 1 после from. я считаю и с последней, так как она не совпадает с over сортировкой ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 12:28 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39633580&tid=1884118]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 307ms |
| total: | 508ms |

| 0 / 0 |
