|
|
|
Хитрая сортировка
|
|||
|---|---|---|---|
|
#18+
AmKadне сказано, что если текущий месяц - первый, и сравнивать за предыдущий нечего.не сказано - не сравнивай no women - no cry ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2016, 18:45 |
|
||
|
Хитрая сортировка
|
|||
|---|---|---|---|
|
#18+
--Eugene--AmKadне сказано, что если текущий месяц - первый, и сравнивать за предыдущий нечего.не сказано - не сравнивайЕсли посмотришь мой запрос, то я и не сравниваю. И по этому поводу был вопрос от mraks-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2016, 18:50 |
|
||
|
Хитрая сортировка
|
|||
|---|---|---|---|
|
#18+
AmKad, да, извини вообще говоря, мой запрос - это твой, только без аналитики. и есть мнение, что подход FIRST/LAST работает быстрее, чем ROW_NUMBER() или FIRST_VALUE() / LAST_VALUE() и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2016, 19:01 |
|
||
|
Хитрая сортировка
|
|||
|---|---|---|---|
|
#18+
--Eugene--и есть мнение, что подход FIRST/LAST работает быстрее, чем ROW_NUMBER() или FIRST_VALUE() / LAST_VALUE() и т.п.У меня в целом такое же ощущение. Хотя специально не проверял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2016, 19:09 |
|
||
|
Хитрая сортировка
|
|||
|---|---|---|---|
|
#18+
Магия данных - еcли ничья, то выбирать победителя в предыдущем месяце надо не из вcех а только из претендентов: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2016, 00:45 |
|
||
|
Хитрая сортировка
|
|||
|---|---|---|---|
|
#18+
_hz_Т.е. получается рекурсивный алгоритм: 1. Ищем максимальное значение Pay_Sum за максимальный Pay_Month. Если оно одно, то значение Payer -- результат. 2. Если максимальное значение Pay_Sum несколько, то выполняем шаг 1 для Pay_Month - 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. 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2016, 04:40 |
|
||
|
Хитрая сортировка
|
|||
|---|---|---|---|
|
#18+
mraksAmKad, А еще, я, возможно неправильно понял условие, но на этих данных, запрос вернет E, а надо Q. Хотя это условие можно уточнить: после того, как в максимальный день совпали суммы для двух payer мы будем сравнивать предыдущие дни только для них или для всех? Какой результат должен получиться на примере ниже? WITH Tab AS ( SELECT 'A' AS Client, 'Q' AS Payer, 1 AS Pay_Month, 10 AS Pay_Sum FROM Dual UNION ALL SELECT 'A' AS Client, 'E' AS Payer, 1 AS Pay_Month, 15 AS Pay_Sum FROM Dual UNION ALL SELECT 'A' AS Client, 'Q' AS Payer, 2 AS Pay_Month, 20 AS Pay_Sum FROM Dual UNION ALL SELECT 'A' AS Client, 'W' AS Payer, 2 AS Pay_Month, 20 AS Pay_Sum FROM Dual ) select client, max(payer) keep (dense_rank last order by pay_month) payer from (select client, payer, pay_month, pay_sum, row_number() over (partition by client, pay_month order by pay_sum desc) dr, count (*) over (partition by client, pay_month, pay_sum order by pay_sum ) cnt from tab ) where dr = cnt and cnt = 1 group by client; Да, надо Q SYМагия данных - еcли ничья, то выбирать победителя в предыдущем месяце надо не из вcех а только из претендентов Именно так. Спасибо. Надо потестить Ваш запрос на боевых данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2016, 09:30 |
|
||
|
Хитрая сортировка
|
|||
|---|---|---|---|
|
#18+
SYМагия данных - еcли ничья, то выбирать победителя в предыдущем месяце надо не из вcех а только из претендентов Это не решит проблемы, если все победители в последнем месяце платили ему только в этот месяц, и в более ранний период их не найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 07:49 |
|
||
|
Хитрая сортировка
|
|||
|---|---|---|---|
|
#18+
SY, спасибо большое. То, что надо! kaldoreySYМагия данных - еcли ничья, то выбирать победителя в предыдущем месяце надо не из вcех а только из претендентов Это не решит проблемы, если все победители в последнем месяце платили ему только в этот месяц, и в более ранний период их не найти. Тогда любого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 10:01 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39359119&tid=1886906]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 465ms |

| 0 / 0 |
