| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > Достать распределение |
| Автор: hello19 11.9.2014, 19:55 | ||||||
| Привет всем! Мне нужно рассчитать распределение количества пользователей за определенный промежуток времени для каждого сайта. Написал запрос для определения того, какой пользователь на какой ресурс заходил за определенный временной промежуток. Полученный результат выглядит как-то так:
Осталось из этого достать распределение по частоте и отобразить его в таком вот виде:
Частоту хочу задавать не конкретным числом, а интервалом и держать его в табличке:
Помогите разобраться как сделать так, чтобы результат отображался "в строчку" и при этом не приходилось бы сильно менять код, в случае если понадобятся другие интервалы... |
| Автор: Zloxa 11.9.2014, 20:26 |
Это не про SQL. Основная парадигма стуктуированного языка запросов - структура результата не зависит от состава данных. Но суровые реалии жизни таки иногда заставляют транспонировать. Обычно это делают с помощью: 1) Внешних средств - формиуют на клиенте или подключают какую нить BI 2) Динамическим построением запроса, т.е. текст запроса формируется программно непосредственно перед выполнением, на основе каких -то данных. 3) Некоторые диалекты уже предоставляют готовые сопелки. К примеру Акцесс. Постгр вроде тоже может. Оракл, МС, My - нет |
| Автор: hello19 11.9.2014, 20:30 |
| Почему нельзя средствами SQL? Вот есть же PIVOT, например... только не знаю как там уйти от того, чтобы вручную вписывать названия стобцов. |
| Автор: hello19 11.9.2014, 21:15 | ||
А пример можно увидеть как это сделать? |
| Автор: Zloxa 11.9.2014, 21:25 | ||||
Для этого прийдется использовать какой-то процедурный язык. Похапэ там, делфи, сишарп, pl/sql и прпр - на чем вы там пишите. Обычно при составлении динамическом формировании текста запроса очень активно используют конкатенацию |
| Автор: hello19 11.9.2014, 21:31 |
| Я пишу запрос на sql.. Гугл что-то выдает на запрос "sql вывод строк столбцами", разбираюсь. Правда пока безрезультатно. И не нужно вкапываться так.. |
| Автор: Zloxa 11.9.2014, 21:36 |
1) Язык sql насчитвает сто пяццот диалектов. В нектоторых можно динамически транспонировать, в большинстве нет - Для какой платформы вы пишите - Оракл, МS SQL, Interbase? 2) Для того, чтобы динамически сформировать SQL запрос, вероятнее всего прийдется использовать какой-то иттеративный язык прогаммирования. Можно сформировать текст SQL запроса и средствами SQL, но это, как правило - просто извращение |
| Автор: Akina 12.9.2014, 08:07 | ||
Хотя большинство диалектов предоставляют средства выполнения текста запроса из литерала/переменной... lamer-friendly interface... |
| Автор: Zloxa 12.9.2014, 08:10 | ||||
Большинство диалектов имеют процедурные расширения, средствами которых можно и сформировать и исполнить sql. |