Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Достать распределение 
:(
    Опции темы
hello19
Дата 11.9.2014, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



Привет всем!
Мне нужно рассчитать распределение количества пользователей за определенный промежуток времени для каждого сайта.

Написал запрос для определения того, какой пользователь на какой ресурс заходил за определенный временной промежуток. Полученный результат выглядит как-то так:

Код

+-----------+---------------------+-------------------+
|  site_id  | visitor_id          | count(visitor_id) |
+-----------+---------------------+-------------------+
|         8 |  353389751327572831 |              1120 |
|         8 | 8248747651386193561 |              1005 |
|         8 | 1773132781390152736 |               957 |
|         8 |  501663501391419490 |               936 |
|         5 | 1231874741355575425 |               925 |
|         5 | 2078329811388561752 |               904 |
|         2 | 7565480111354343102 |               875 |
|         2 |  997915071394432214 |               870 |
|         2 | 2363204321364319637 |               869 |
|         2 |   17474831359576968 |               866 |
+-----------+---------------------+-------------------+


Осталось из этого достать распределение по частоте и отобразить его в таком вот виде:
Код

    site_ID        1    2    3    4    5
    ----------    ---  ---  ---  ---  ---
    1             967  576  856  234  
    2             576  947  847  987  324
    .
    .

Частоту хочу задавать не конкретным числом, а интервалом и держать его в табличке:
Код

create temporary table ranges (
   s int not null,
   e int not null
);

insert into ranges (s, e) values
   (0, 10),
   (11, 20),
   (21, 30),
   (31, 40),
   (41, 50),
   (51, 100),
   (101, 300),
   (301, 500),
   (501, 1000),
   (1001, 1500),
   (1500, 10000)
;


Помогите разобраться как сделать так, чтобы результат отображался "в строчку" и при этом не приходилось бы сильно менять код, в случае если понадобятся другие интервалы... 
PM MAIL WWW   Вверх
Zloxa
Дата 11.9.2014, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(hello19 @  11.9.2014,  20:55 Найти цитируемый пост)
 чтобы результат отображался "в строчку"

Это не про SQL. Основная парадигма стуктуированного языка запросов - структура результата не зависит от состава данных. Но суровые реалии жизни таки иногда заставляют транспонировать. Обычно это делают с помощью:
1) Внешних средств - формиуют на клиенте или подключают какую нить BI
2) Динамическим построением запроса, т.е. текст запроса формируется программно непосредственно перед выполнением, на основе каких -то данных.
3) Некоторые диалекты уже предоставляют готовые сопелки. К примеру Акцесс. Постгр вроде тоже может. Оракл, МС, My - нет


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
hello19
Дата 11.9.2014, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



Почему нельзя средствами SQL? Вот есть же PIVOT, например... только не знаю как там уйти от того, чтобы вручную вписывать названия стобцов.
PM MAIL WWW   Вверх
Zloxa
Дата 11.9.2014, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(hello19 @  11.9.2014,  21:30 Найти цитируемый пост)
только не знаю как там уйти от того, чтобы вручную вписывать названия стобцов. 

Динамически формируя текст запроса.
Цитата(hello19 @  11.9.2014,  21:30 Найти цитируемый пост)
Почему нельзя средствами SQL? 

Потому что основная парадигма SQL - структура результата не зависит от состава данных. smile

Добавлено через 25 секунд
Цитата(hello19 @  11.9.2014,  21:30 Найти цитируемый пост)
Вот есть же PIVOT, например... 

он есть не везде. Озвучте уже платформу чтоли


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
hello19
Дата 11.9.2014, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



Цитата(Zloxa @  11.9.2014,  21:13 Найти цитируемый пост)
Цитата(hello19 @  11.9.2014,  21:30 )
только не знаю как там уйти от того, чтобы вручную вписывать названия стобцов. 

Динамически формируя текст запроса.


А пример можно увидеть как это сделать?
PM MAIL WWW   Вверх
Zloxa
Дата 11.9.2014, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(hello19 @ 11.9.2014,  22:15)
Цитата(Zloxa @  11.9.2014,  21:13 Найти цитируемый пост)
Цитата(hello19 @  11.9.2014,  21:30 )
только не знаю как там уйти от того, чтобы вручную вписывать названия стобцов. 

Динамически формируя текст запроса.


А пример можно увидеть как это сделать?

Для этого прийдется использовать какой-то процедурный язык. Похапэ там, делфи, сишарп, pl/sql и прпр - на чем вы там пишите. Обычно при составлении динамическом формировании текста запроса очень активно используют конкатенацию  smile 

Это сообщение отредактировал(а) Zloxa - 11.9.2014, 21:25


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
hello19
Дата 11.9.2014, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



Я пишу запрос на sql.. 
Гугл что-то выдает на запрос "sql вывод строк столбцами", разбираюсь. Правда пока безрезультатно.
И не нужно вкапываться так..
PM MAIL WWW   Вверх
Zloxa
Дата 11.9.2014, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(hello19 @  11.9.2014,  22:31 Найти цитируемый пост)
Я пишу запрос на sql.. 

1) Язык sql насчитвает сто пяццот диалектов. В нектоторых можно динамически транспонировать, в большинстве нет - Для какой платформы вы пишите - Оракл, МS SQL, Interbase?

2) Для того, чтобы динамически сформировать SQL запрос, вероятнее всего прийдется использовать какой-то иттеративный язык прогаммирования. Можно сформировать текст SQL запроса и средствами SQL, но это, как правило - просто извращение

Это сообщение отредактировал(а) Zloxa - 11.9.2014, 21:38


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 12.9.2014, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Zloxa @  11.9.2014,  22:36 Найти цитируемый пост)
Можно сформировать текст SQL запроса и средствами SQL, но это, как правило - просто извращение

Хотя большинство диалектов предоставляют средства выполнения текста запроса из литерала/переменной... lamer-friendly interface...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 12.9.2014, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @ 12.9.2014,  09:07)
Цитата(Zloxa @  11.9.2014,  22:36 Найти цитируемый пост)
Можно сформировать текст SQL запроса и средствами SQL, но это, как правило - просто извращение

Хотя большинство диалектов предоставляют средства выполнения текста запроса из литерала/переменной... lamer-friendly interface...

Большинство диалектов имеют процедурные расширения, средствами которых можно и сформировать и исполнить sql.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0908 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.