|
|
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Допустим, имеется таблица: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Необходимо получить таблицу, которая содержала бы средние значения поля f1 для каждых n строк. Т.е. для n == 3 получилось бы: Код: sql 1. 2. 3. 4. Вопрос: как это реализвать наиболее изящно и с наименьшими извращениями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 18:15:49 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Группировка по модулю номера строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 18:40:17 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Jarz, ахинея. потому что логически данные строки никак между собой не связаны. "Номеров" у строк нет, поэтому при любом изменении порядка строк результат будет другим. wadman предложил абстрактный вариант, с тем же успехом можно было бы группировать по любому другому критерию, которого тут не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 18:53:06 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
kdvс тем же успехом можно было бы группировать по любому другому критерию, которого тут не существует. Есть предположение, что среднее берется по целой части f1, а не по номеру строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 18:56:45 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Jarzкак это реализвать наиболее изящно и с наименьшими извращениями?в ХП сделайте выборку с order by id и присваивайте последовательные номера каждой выходящей из этой ХП строке (добавьте в ХП выходной параметр типа rownum int). Далее делайте что-то типа такого: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 19:06:39 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 19:34:20 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
В трёшке всё будет по-человечьи, одним запросом: DDL: Код: 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. Query + result: Код: 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. Надо только дождаться, когда аналитич. ф-ции будут допилены в сторону подхвата индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 09:20:20 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Ованес Сусанян, И какой же индекс ты собираешься использовать в данном запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 09:24:57 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисИ какой же индекс ты собираешься использовать в данном запросе?row_number()over( order by id )-1) (вместо натурала + sort'a - просто навигацией идти по нему) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 09:27:51 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Ованес Сунанян, Выигрыша не будет. Навигация по индексу будет эффективней только в том случае если он читается не полностью. В данном же случае один фиг сканируется вся таблица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 09:32:21 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисВыигрыша не будет. Навигация по индексу будет эффективней только в том случае если он читается не полностью. В данном же случае один фиг сканируется вся таблицаА я не про выигрыш, а про проигрыш. Оптимизатор сейчас не подхватывает индекс (или вообще блокирует его использование). sample Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 09:41:00 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Ованес Сунанян, Про это был уже разговор с Таблоидом. Ты лучше покажи в какой СУБД этот индекс умеет использоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 09:59:06 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисПро это был уже разговор с Таблоидом. Ты лучше покажи в какой СУБД этот индекс умеет использоваться.Индекс стопудово используется в ms sql и орацле (причем, и для прямой и для обратной навигации - например, когда в одном запросе есть over(order by id) и over(order by id DESC)). У тебя есть они там, в виде XE например ? PS. Все вариации фамилии "Сусанин" - это я и есть, просто в малозначащих топегах не хочу засвечиваться, искать "себя" потом неудобно :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 10:04:35 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Таблоид, мы с тобой прошлый раз выяснили, что Оракл вообще не правильно работает в данном случае. Про MS SQL надо посмотреть. Подождём пока dimitr не сделает более расширенный план для оконных функций (чтобы он ничего не скрывал). Кстати в fbdevel недавно было обсуждение в каком виде этот план выводить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 10:14:48 |
|
||
|
AVG для каждых n строк
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисОракл вообще не правильно работает в данном случае.Oracle работает на случае выборки с row_number()over(order by <indexed_field>) ОК, индекс как раз подхватывается. Код: 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. 46. 47. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 12:59:38 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=115&tid=1564378]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 223ms |
| total: | 522ms |

| 0 / 0 |
