|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Здравствуйте. Подскажите, пожалуйста, как найти первые Х, точнее Х+ записей, чтобы заканчивались до нового значения в столбце. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
То есть, например, нужно выбрать 10 первых строк, но так как значение n не закончилось (не изменилось) на 11-ой строке, а продолжилось, то необходимо все выбрать все строки с n 1, 2, 3 и 4, то есть пока n не изменилось, то есть 12 строк. Порядок строк обеспечивает i. То есть, если задача будет выбрать 12 строк, то выберутся только 12, так как по полю n следующие изменения будут на 13-ой строке. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 14:31 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Разучить RANK() over(). Или Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 14:39 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
--del-- ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 14:43 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Извините, возможно это важно, MS SQL 2008 R2 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 14:45 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222, Извините, но совершенно не поняла, как я могу полезно применить здесь RANK() OVER ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 15:32 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 16:22 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000 aleks222, Извините, но совершенно не поняла, как я могу полезно применить здесь RANK() OVER Не поняла - значит надо учиться лучше. Чем тебе ties не угодили? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 17:22 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222 Чем тебе ties не угодили? Julia2000 Порядок строк обеспечивает i. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 21:12 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
invm aleks222 Чем тебе ties не угодили? Julia2000 Порядок строк обеспечивает i. Проблема прям... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 06:17 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Всем спасибо! Но, оказалось одно дополнительное условие. Последовательность строк все также обеспечивает поле i. Если n изменилось, то остальные n (с большим i) со значением 4 в выборку не нужно включать. Естественно остаются все предыдущие условия. Код: 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.
Сделала так. Вроде, все правильно работает. То есть n = 4 с i = 16 не выбирает. Можно ли как-то проще это сделать? Спасибо ) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 16:53 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000 Всем спасибо! Но, оказалось одно дополнительное условие. Последовательность строк все также обеспечивает поле i. Если n изменилось, то остальные n (с большим i) со значением 4 в выборку не нужно включать. Естественно остаются все предыдущие условия. Код: 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.
Сделала так. Вроде, все правильно работает. То есть n = 4 с i = 16 не выбирает. Можно ли как-то проще это сделать? Спасибо ) Що вы пишите господа в годе 2022? Код: sql 1.
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 17:20 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
a_voronin, На MSSQL2008 это работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 17:28 |
|
выбрать 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. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 18:49 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
3unknown, Спасибо! Оказалось, что мой вариант в текущем виде неправильный. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 05:07 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
3unknown Код: 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.
Зачем этот ужасный ужос? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 07:13 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000,м.б. интересен вариант через рекурсию Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 00:30 |
|
выбрать 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. 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.
Здравствуйте. Возможно я плохо объяснила задачу )) Я ее выполнила так. Это рабочее решение. Возможно не оптимальное, но работает правильно. Смысл, @q - задает количество записей, которые нужны от начала, но, если последующие значения n равны значению n этой строки, то их тоже нужно включить в выборку. Если n есть дальше, но оно прерывалось, то те значения уже не нужны. Например, при @q = 12 (i = 12), n = 4, но значение 4 продолжается по i = 15, вот по эту строку и нужно включить в выборку, а остальные с n = 4 (и другими значениями n) и i > 15 уже не нужны, так последовательность подряд n = 4 прекратилась/изменилась. Также, если @q = 33 (i = 33), то нужно выбрать строки по i = 34. То есть последовательность обеспечивает i и выборка с минимального значения i и по i=q, но до тех пор, пока n не изменится. Надеюсь, понятно объяснила. Всем Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 06:25 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Мягко сказать... "ваше решение ужасно" - это даже на политкорректность не тянет, это сверхгуманизм. Это говнокод. Увы. Ортодоксально Код: sql 1. 2. 3. 4. 5. 6. 7.
Можно немножко прогрессивнее Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 07:39 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222 Код: sql 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:30 |
|
выбрать 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. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:33 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222 Код: sql 1. 2. 3. 4. 5. 6. 7.
Например, при q = 39 должно было закончится этой строкой, а у вас чуть дальше. Да, к сожалению, я не программист. По крайней мере образование - музыкальный колледж )))) Но хоть мой код - г... Но результат правильный. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:40 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222, Код: 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.
Код: plaintext 1. 2. 3.
Может я чего-то не понимаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:43 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000 aleks222 Код: sql 1. 2. 3. 4. 5. 6. 7.
Например, при q = 39 должно было закончится этой строкой, а у вас чуть дальше. Да, к сожалению, я не программист. По крайней мере образование - музыкальный колледж )))) Но хоть мой код - г... Но результат правильный. У вас еще таинственным образом x участвует. Обобщение на такой случай - задача для младшей ясельной группы. Но вашему словесному описанию задачи результат соответствует: "но до тех пор, пока n не изменится". Рекламация не принимается. Учитесь не только играть, но делать это внятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:50 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000 aleks222, Код: 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.
Код: plaintext 1. 2. 3.
Может я чего-то не понимаю... У вас что древнее из MS SQL. Там этого синтаксиса нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:52 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222 Julia2000 пропущено... Например, при q = 39 должно было закончится этой строкой, а у вас чуть дальше. Да, к сожалению, я не программист. По крайней мере образование - музыкальный колледж )))) Но хоть мой код - г... Но результат правильный. У вас еще таинственным образом x участвует. Обобщение на такой случай - задача для младшей ясельной группы. Но вашему словесному описанию задачи результат соответствует: "но до тех пор, пока n не изменится". Рекламация не принимается. Учитесь не только играть, но делать это внятно. x - здесь вообще можно убрать, он вообще никак не участвует. Он необходим в следующей части задачи, которая здесь никак не затрагивается. Просто я в своем тестовом примере его изначально включила... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:52 |
|
|
start [/forum/topic.php?fid=46&fpage=4&tid=1683873]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 165ms |
0 / 0 |