|
выбрать 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 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222 У вас что древнее из MS SQL. Там этого синтаксиса нет. Извините, но что мне выдал сервер, то я вам и показала... MSSQL2008 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:53 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000 aleks222 У вас что древнее из MS SQL. Там этого синтаксиса нет. Извините, но что мне выдал сервер, то я вам и показала... MSSQL2008 Извиняю, пользуйтесь ортодоксальным вариантом. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:55 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222 Извиняю, пользуйтесь ортодоксальным вариантом. Чуть выше я вам показала, что он тоже дает неправильный результат. 22429400 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 08:57 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000 aleks222 Извиняю, пользуйтесь ортодоксальным вариантом. Чуть выше я вам показала, что он тоже дает неправильный результат. 22429400 Чуть выше я вам растолковал, что "рояль в кустах не виден". В вашем описании значение колонки X не указано. На себя жалуетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 09:00 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000 aleks222 пропущено... У вас еще таинственным образом x участвует. Обобщение на такой случай - задача для младшей ясельной группы. Но вашему словесному описанию задачи результат соответствует: "но до тех пор, пока n не изменится". Рекламация не принимается. Учитесь не только играть, но делать это внятно. x - здесь вообще можно убрать, он вообще никак не участвует. Он необходим в следующей части задачи, которая здесь никак не затрагивается. Просто я в своем тестовом примере его изначально включила... Тогда все правильно. i n x 1 1 1 2 1 2 3 1 3 4 2 1 5 2 1 6 2 2 7 2 3 8 3 1 9 3 1 10 3 2 11 4 1 12 4 1 13 4 2 14 4 2 15 4 3 16 5 1 17 5 2 18 6 1 19 6 2 20 6 3 21 6 4 22 7 1 23 7 2 24 7 3 25 3 3 26 3 3 27 3 3 28 3 3 29 8 1 30 8 2 31 8 2 32 9 1 33 4 4 34 4 4 35 11 1 36 11 2 37 11 3 38 12 2 ------------ 39 4 5 40 4 6 ------------------ 41 10 1 42 10 1 43 10 2 44 10 3 45 4 7 46 4 7 47 4 7 48 4 7 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 09:02 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222, Честно, я верю, что вы профессионал и все прочее. Но, возможно, я очень плохо объяснила условия задачи. Возможно, у вас просто плохое настроение. Чуть выше я написала, что x вообще никак не участвует. И в моем варианте решения это видно. Исходные данные Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Ваш вариант решения Код: sql 1. 2. 3. 4. 5. 6. 7.
Мой вариант решения Код: 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.
результат при q=1 - все отлично Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
результат при q=13 (( у меня правильно, у вас неправильно Код: 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.
результат при q=11, все отлично (лишнюю строку с null можно потом убрать) Код: 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.
результат при q=39, (( у меня правильно, у вас неправильно Код: 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. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90.
Возможно, и я даже в этом уверена, что мой код ужасно плохой, неоптимальный (говнокод), но он дает правильный результат. По-моему, это важнее для работы. Да, я прекрасно понимаю, что лучше, когда лучше (профессиональнее и прочее), но я не умею и поэтому посмела опубликовать здесь свое решение и, вдруг, у кого-то будет настроение/желание подсказать, объяснить... Но это не обязательно, это всего лишь личное желание. Фсе! Код: sql 1.
Вот это везде я написала исходя из моего уровня знаний. А именно, большой объем данных, индексы созданы по i и по n. Как я понимаю, что если я результат этого запроса положу во временную таблицу, то там уже, вроде , не работают индексы. Возможно, я не права. За одно я пронумеровала i, чтобы не было разрывов. Возможно, зря. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 10:24 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000 aleks222, Честно, я верю, что вы профессионал и все прочее. Но, возможно, я очень плохо объяснила условия задачи. Возможно, у вас просто плохое настроение. Чуть выше я написала, что x вообще никак не участвует. И в моем варианте решения это видно. Мадам, теперь объясните почему запись i = 40 не попадает в выборку @q = 39? i n x ------------ 39 4 5 40 4 6 ------------------ Согласно техзаданию: Julia2000 Смысл, @q - задает количество записей, которые нужны от начала, но, если последующие значения n равны значению n этой строки, то их тоже нужно включить в выборку . Если n есть дальше, но оно прерывалось, то те значения уже не нужны. ЗЫ: А уж потом, я полезу разбираться в дебри вашего кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 12:17 |
|
выбрать 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.
А еще уверяют, что музыка сродни математике... Врут-сЪ. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 12:29 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222, Наверное, потому что у меня есть там - row_number() over(order by ts.i). Я i переделала нумерацию сначала, чтобы избавится от возможных дыр в нумерации. Возможно, я это зря сделала, но меня (заказчика) эта часть полностью устраивает. То есть, еще раз цель, мне необходимо выбрать сколько-то строк сначала (начало/последовательность определяется по i), но с условием, пока n не изменилось их также включить в выборку, все это согласно последовательности по i. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 12:35 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222 А еще уверяют, что музыка сродни математике... Врут-сЪ. С этим абсолютно согласна! Мне никогда не давалась математика, а с музыкой все прекрасно )) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 12:37 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
39 первых строк. i n x 1 1 1 2 1 2 3 1 3 4 2 1 5 2 1 6 2 2 7 2 3 8 3 1 9 3 1 10 3 2 11 4 1 13 4 2 14 NULL NULL 15 4 2 16 4 3 17 5 1 18 5 2 19 NULL NULL 20 6 1 21 6 2 22 6 3 23 6 4 24 7 1 25 7 2 26 7 3 27 3 3 28 3 3 29 3 3 30 3 3 31 8 1 32 8 2 33 8 2 34 9 1 35 4 4 36 4 4 37 11 1 38 11 2 39 11 3 40 12 2 Теперь "по-слогам": чего в них неправильного? ЗЫ. Я конечно понимаю, что именно. ФОРМАЛЬНО - все по техзаданию. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 12:52 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 12:54 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
aleks222 Код: sql 1. 2. 3. 4. 5. 6. 7.
К этому претензий вообще нет! Видимо, не хватало - where n is not null ) Спасибо! Хотя для меня вообще непонятно %) Но это уже мои проблемы... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 13:27 |
|
выбрать N+ количество строк (пока значение не изменилось)
|
|||
---|---|---|---|
#18+
Julia2000 aleks222 Код: sql 1. 2. 3. 4. 5. 6. 7.
К этому претензий вообще нет! Видимо, не хватало - where n is not null ) Спасибо! Хотя для меня вообще непонятно %) Но это уже мои проблемы... Разруха не в сортирах, разруха в головах. ЗЫ. Если null не нужен и "значением" не считается - это в тех.задании надо указывать. А не в голове держать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2022, 13:47 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1683873]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 311ms |
0 / 0 |