|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Доброго времени суток. Подскажите пожалуйста, есть ли более элегантный способ, чем мой Требуется если записей больше 10, остальные суммировать в категорию Others. В принципе сделал, но чет мне кажется что есть более изящное решение + не решил, если категорий ровно 10, то не выводить Other Предполагается что основной подзапрос отсортирован по a desc Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 18:48 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
artas, На счёт изящности не уверен, но если хочется по-другому, то можно так: Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 06:32 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
artas если записей больше 10 если категорий ровно 10 Код: plsql 1.
artas основной подзапрос отсортирован по a desc ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 07:52 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
PuM256 но если хочется по-другому, то можно так: ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 07:55 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Elic artas если записей больше 10 если категорий ровно 10 Код: plsql 1.
artas основной подзапрос отсортирован по a desc Имена груп уникальны, так что считаются записи, кроме случая Other Понятно что итоговый запрос собьет сортировку, о это не страшно, главное что Other проставит наименьшим значениям. Это данные для круговой диаграммы если что ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 09:19 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
artas Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 09:44 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Elic, artas + не решил, если категорий ровно 10, то не выводить Other ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 13:52 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Тьфу блин, ночью писал, неправильно условие понял. Думал, собирать всё в Others, если записей больше 10 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 13:53 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 23:35 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
-2- Код: plsql 1. 2. 3. 4. 5. 6. 7.
artas Предполагается что основной подзапрос отсортирован по a desc SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2020, 03:09 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
-2-, спасибо, не знал про match_recognize Как я понимаю, решения для "если записей ровно 10, то не выводить others" красивого нету ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 11:30 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
artas не знал про match_recognize Ты определился: первые 9 из отсортированых по a desc или ервые 9 из отсортированых по name. Если по name и не выводить others" то в данном случае (define f1 as match_number() < 10) банально убираешь pattern others. Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 14:46 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
artas Как я понимаю, решения для "если записей ровно 10, то не выводить others" красивого нету ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 14:54 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
SY Ты определился: первые 9 из отсортированых по a desc или ервые 9 из отсортированых по name. - если входных записей 10 и меньше, выходные соответствуют входным. - если больше, выводятся 9 входных, входная 10 и далее агрегируются в одну выходную 10 other. Как дополнить define, я указывал в стертом ответе. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 14:57 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Кстати, sum(a) там по-барабану. Это решение ничего не суммирует, т.к. в pattern всего одна строка: Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 15:00 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
SY Кстати, sum(a) там по-барабану да, вы правы, сум ничего и не должно суммировать, тк названия уникальны (разве что у меня в примере было по other), это было нужно для группировки. -2-,SY, спасибо, сейчас попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 15:12 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
artas SY Кстати, sum(a) там по-барабану да, вы правы, сум ничего и не должно суммировать, тк названия уникальны (разве что у меня в примере было по other), это было нужно для группировки. -2-,SY, спасибо, сейчас попробую ??? Тогда зачем в исходнике у тебя group by name если name уникальны? Т.e. все что нужно это первые 9 строк отсортированых по a desc: Код: 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.
Или по name: Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 15:25 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
SY artas не знал про match_recognize Ты определился: первые 9 из отсортированых по a desc или ервые 9 из отсортированых по name. Если по name и не выводить others" то в данном случае (define f1 as match_number() < 10) банально убираешь pattern others. подзапрос с изначальными данными отсортирован по % (поле а) name - уникально для каждой строки цель - из данной выборки, получить 9 записей неизменных, отсортированныйх по полю а, по убыванию + остальное суммированное под общим именем Other либо, если записей 10 илил меньше, получить изначальный набор для приведенного варианта это 0.1 a 0.1 b 0.1 c 0.1 d 0.1 e 0.1 f 0.1 g 0.1 h 0.1 q 0.1 Other ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 15:33 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Еще раз. Просто сделай подзапрос с изначальными данными отсортирован по % (поле а) запросом и дотачай к нему fetch first 9 rows only. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 15:38 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
artas, чем row_number() не подходит? или принципиально c match_recognize? Код: 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 09:03 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Stax чем row_number() не подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 09:14 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Stax, спасибо, отличный вариант, возможно ли сдесь сделать если записей ровно 10(в подзапросе) то оставлять выборку без изменений ? т.к. на 10 записях последнюю переименовывает в others ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 10:14 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
artas Stax, т.к. на 10 записях последнюю переименовывает в others решение влоб (мне не нравится) Код: 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. 39. 40. 41. 42. 43. 44. 45.
.... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 10:36 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
Stax, спасибо, общий каунт первое что пришло в голову, но это уж очень влоб. Ладно, буду выполнять на клиенте. Всем спасибо, тему можно закрывать ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 11:22 |
|
Суммирование с условием
|
|||
---|---|---|---|
#18+
artas 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
.... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 12:17 |
|
|
start [/forum/topic.php?fid=52&fpage=49&tid=1881397]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 288ms |
total: | 435ms |
0 / 0 |