|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
Есть таблица с номерами телефонов, время начала разговора, длительность разговора . Каким образом найти максимальное количество одновременно звонящих телефонов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 11:13 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
foxtvЕсть таблица с номерами телефонов, время начала разговора, длительность разговора . Каким образом найти максимальное количество одновременно звонящих телефонов.А где время начала звонка телефона, время конца звонка телефона? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 11:17 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
foxtv, тут тебе нужен unpivot + накопительный итог. Основная идея такая: 1) начала и кончала (кончало = начало + длительность) развернуть в таблицу, вида: дата_события, тип_события. Где дата события, естественно, либо начало, либо кончало. Ну атип, понятное дело, как таз и будет описывать что именно за дата у нас - начало или кончало. Для простоты можно брать +1 для начала разговора и -1 для его кончала. А дальше - дело техники. Накопительным итогом считаем сумму типов_событий. Каждый начавшийся разговор добавит единицу к одновременным звонкам, каждое кончало - отнимет её. После это останется лишь найти максимальное из значений накопительной суммы. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 11:25 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
сумму считаем в отсортированном множестве разговоров в порядке: дата_начала, длительность. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 11:27 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
iap, Номер телефона----Время начала разговора----Длительность (минуты) 25623----20.06.2013 14:30----5 25621----20.06.2013 14:31----5 25622----20.06.2013 14:32----5 25624----20.06.2013 14:33----5 25625----20.06.2013 14:34----5 Результат: 5 телефонов которые одновременно занимали линию ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:39 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
foxtviap, Номер телефона----Время начала разговора----Длительность (минуты) 25623----20.06.2013 14:30----5 25621----20.06.2013 14:31----5 25622----20.06.2013 14:32----5 25624----20.06.2013 14:33----5 25625----20.06.2013 14:34----5 Результат: 5 телефонов которые одновременно занимали линию одновременно занимали линию за какой промежуток то? В какое время? Требования какие? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:44 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
а номер линии где ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:44 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
думаю, iap имел в виду, что даже если разговор еще не начался, линия уже занята (абонент А слышит гудки пока абонент Б бежит из кухни к телефону:) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:45 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
Паганельдумаю, iap имел в виду, что даже если разговор еще не начался, линия уже занята (абонент А слышит гудки пока абонент Б бежит из кухни к телефону:)Я имел в виду, что хорошо бы сформулировать задачу на русском языке. Всё-таки, "одновременно звонящих телефонов" - как это понимать без дополнительных пояснений? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:49 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
Сергей Викт., Неважно за какой промежуток, неважно какая линия. Вопрос в том чтобы определить максимальную нагрузку, т.е. максимальное количество людей звонящих в одно и то же время. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:49 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
foxtvСергей Викт., Неважно за какой промежуток, неважно какая линия. Вопрос в том чтобы определить максимальную нагрузку, т.е. максимальное количество людей звонящих в одно и то же время. http://ru.wikipedia.org/wiki/Эрланг ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:50 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
foxtvСергей Викт., Неважно за какой промежуток, неважно какая линия. Вопрос в том чтобы определить максимальную нагрузку, т.е. максимальное количество людей звонящих в одно и то же время. 14484780 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:51 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
В общем, задача на пересечение промежутков времени? Но ведь 5 телефонов из примера занимали линии одновременно не всегда. Были моменты, когда один из них соединился, а остальные - нет. А были моменты, когда таких было 3. Снова непонятно что же нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:52 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
iap, В данном примере в интервале 14:30 - 14:35 - занимали линию все пять телефонов и неважно со скольки каждый начинал разговор с 14:31 или 14:34. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:56 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
foxtv, ну хорошо, продолжаем словесные перепалки, раз вразумительных юзабильных тестовых данных нет. 2. Другой вариант решения поставленной задачи. Генерируем полный набор секунд за интересуемый период времени, пересекаем результат генерации со звонками, группируем по секундам, находим секунду с максимальным количеством повторений. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:58 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 13:27 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
iap, Подход, конечно, интересный. Но в корне неверный. Для примера на таких данных затестируй: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Вроде видно, что более двух разговоров одновременно не было... А запрос показывает совсем другое ;). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 13:38 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
Добрый Э - Эх, да во втором варианте все секунды не нужны, достаточно начала разговоров взять за опорную таблицу Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 13:38 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 13:44 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#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.
On-line проверка на sqlfiddle.com ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:01 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
Версию сервера не дописал: Добрый Э - Эх Код: sql 1. 2. 3.
;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:03 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
Добрый Э - Эхiap, Подход, конечно, интересный. Но в корне неверный. Для примера на таких данных затестируй: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Вроде видно, что более двух разговоров одновременно не было... А запрос показывает совсем другое ;).Точно! Период может пересекаться с несколькими, которые не пересекаются между собой. Ну дык дальше надо пилить ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:10 |
|
Помогите написать sql запрос
|
|||
---|---|---|---|
#18+
Добрый Э - Эх, А для MS SQL Server 2000 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:10 |
|
|
start [/forum/topic.php?fid=46&tid=1706412]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 303ms |
0 / 0 |