Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Дана таблица Код: sql 1. 2. 3. 4. 5. 6. Написать запрос, который для данных Код: sql 1. 2. 3. Вернет набор данных вида Код: sql 1. Набор данных содержит все непересекающиеся и несмежные (т.е., между двумя промежутками должен быть минимум один «пустой» день) промежутки между @first_date и @last_date включительно, когда у клиента был хоть один активный договор типа @type_id. Учесть, что у клиента может быть несколько одновременно действующих однотипных договоров. Пояснение: Во вложенной картинке каждый прямоугольник – договор, расположенный на временной шкале, тип договора обозначен цветом. В заданном временном промежутке нужно найти все диапазоны времени, когда действовал хотя бы один договор «синего типа». На рисунке то, что нужно вернуть обозначено как «X». сделал такое решение, но мне кажется неверное, так как: 1) не учитываются клиенты, для каждого клиента должны быть свои непересекающиеся интервалы (спорно) 2) в данном решении идет объединение пересекающихся интервалов, думаю что пересекающихся интервалов вообще не должно быть Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 05:44 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Проще надо быть Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 06:23 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
aleks222, спасибо но есть одна проблемка, не могу объявить переменные до with туплю, делаю так Код: sql 1. 2. 3. 4. 5. 6. он говорит что не знает эти переменных) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 06:53 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 06:56 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
aleks222, да и кстати не работает решение на данных Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 09:16 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Domianosaleks222, да и кстати не работает решение на данных Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. А зачем столько GO? Одного последнего не хватает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 09:20 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Domianos, Код: 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. 91. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 10:36 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Sergey SizovDomianosaleks222, да и кстати не работает решение на данных Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. А зачем столько GO? Одного последнего не хватает? это экспорт из таблицы, сам ничего не писал, видимо так мастер работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 11:04 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, спасибо, интересно, надо проверить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 11:05 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 11:33 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Domianosaleks222, да и кстати не работает решение на данных Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. А подумать? d Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 11:45 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Domianos, мне кажется, что у Вас текст расходится с картинкой. В тексте пишете, найти непересекающиеся и несмежные промежутки, а если смотреть на картинку, то Вам надо найти непрерывные отрезки времени когда действовал хоть какой-нибудь договор нужного типа. aleks222 похоже реализовал ваше словесное описание, а Руслан Дамирович реализовал, как мне думается. задание из картинки. Ошибка "Неправильный синтаксис около конструкции ROWS" появляется скорее всего из-за того, что Вы используете MS SQL Server версии ниже 2012(в соседней теме вроде бы упоминался 2008), а такой синтаксис появился в 2012. Можете попробовать мою версию решения для нахождения непрерывных отрезков времени действия договора для MS SQL SERVER 2008 (в закоментаренной части запрос для 2012 и старше): Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 14:50 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
demind10, спасибо большое! сейчас попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 04:01 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
aleks222, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 04:03 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
demind10, для даных: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. результат Код: sql 1. 2. 3. 4. 5. то есть не учитывается значение с нулевой датой на конце Код: sql 1. для данных Код: sql 1. 2. 3. 4. 5. результат Код: sql 1. 2. перекрывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 04:59 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
aleks222, словесное описание действительно реализовано на 100% спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 05:05 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
aleks222, едиственное, не учитываются null варианты в last_date попробовал немного доработать, вот что получилось Код: 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. но не выходит :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 05:38 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 05:49 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 05:50 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
небольшая доработка в 11 строке Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 05:51 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
aleks222, а ларчик проще открывался :) у меня более рабоче-крестьянская версия ;) спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 05:52 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Такой вариант ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 15:47 |
|
||
|
Найти все непересекающиеся и несмежные промежутки времени
|
|||
|---|---|---|---|
|
#18+
Если что-то не так понял, просьба не серчать. Задача из аналит. геометрии. Два отрезка на числ. оси А1В1 и А2В2. Найти пересечение. Минимум(В1, В2) - Максимум(А1,А2) Положительное значение-пересечение. Отрицательное-пересечения нет. Ноль-касание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 15:36 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39764456&tid=1688388]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 426ms |

| 0 / 0 |
