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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MSSQL]выборка по дням 
:(
    Опции темы
KANekT
Дата 30.5.2008, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нужно сделать подсчитать кол-во посещений за день
Код

SELECT     VisitDateTime, COUNT(*) AS Expr1
FROM         dbo.statistic
GROUP BY VisitDateTime


но трудность в том что в таблице указаны данные с минутами и секундами.
PM MAIL WWW ICQ   Вверх
Akina
Дата 30.5.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Отрежь, кто мешает? 
Код

GROUP BY Format(VisitDateTime, "yyyymmdd")



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

PM MAIL WWW ICQ Jabber   Вверх
ТоляМБА
Дата 30.5.2008, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Читай про DatePart, вычленяй там день и без проблем  smile 
PM   Вверх
KANekT
Дата 30.5.2008, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Фунция format не работает
DATEPART дает возможность вернуть только или год или месяц или день
PM MAIL WWW ICQ   Вверх
ТоляМБА
Дата 30.5.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Цитата(KANekT @  30.5.2008,  12:09 Найти цитируемый пост)
только или год или месяц или день 
А что мешает их склеить? Кста, а БД то какая?
PM   Вверх
KANekT
Дата 30.5.2008, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



MSSQL

PM MAIL WWW ICQ   Вверх
ТоляМБА
Дата 30.5.2008, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



MS-SQL под рукой нет, попробуй:

Код
SELECT DatePart("d","30/05/08") & "/" & DatePart("m","30/05/08") & "/" & DatePart("yyyy","30/05/08") AS Выражение1;
А для преобразования в дату (хотя в данном случае тебе для группировки не обязательно) используй Convert
PM   Вверх
Akina
Дата 30.5.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



вместо трех datepart нагляднее использовать day(), month() и year().
для правильной сортировки надо конкатенировать, начиная с бОльшего измерения, т.е. года. а разделители вообще не нужны. То есть для группировки-то пофиг, а вот для сортировки нет, посему и группить лучше по такому же выражению - и к порядку приучает, и, будет потребуется сортировка, одно выражение считать, а не два.
Код

GROUP BY Year(VisitDateTime) & Month(VisitDateTime) & Day(VisitDateTime)



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

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Цитата(Akina @  30.5.2008,  14:53 Найти цитируемый пост)
То есть для группировки-то пофиг, а вот для сортировки нет,
а разве для сортировки не пофиг, если указать 3 поля, year(d), month(d), day(d)? Ну и порядок проставить (asc/desc).
Что-то типа:
Код
select day(VisitDateTime) d_day, month(VisitDateTime) d_month, year(VisitDateTime) d_year, count(*) as cnt
from dbo.statistic
group by year(VisitDateTime), month(VisitDateTime), day(VisitDateTime)
order by year(VisitDateTime), month(VisitDateTime), day(VisitDateTime)
и уже на клиенте отформатировать 3 поля в одну дату

Это сообщение отредактировал(а) Deniz - 30.5.2008, 12:37


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akina
Дата 30.5.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Deniz @  30.5.2008,  13:35 Найти цитируемый пост)
а разве для сортировки не пофиг, если указать 3 поля, year(d), month(d), day(d)? 

Пофиг. В смысле соединять в единое выражение или нет - пофиг. А вот в каком порядке - год вначале или в конце - совсем не пофиг.
Хотя полагаю, что группирование по одному, пусть и вычисляемому, выражению потребует меньше накладных расходов.

Цитата(Deniz @  30.5.2008,  13:35 Найти цитируемый пост)
и уже на клиенте отформатировать 3 поля в одну дату

Имхо на клиента лучше подавать готовый набор данных... впрочем, если на сервер нагрузка велика, действительно разумнее часть работы взвалить на клиента - правда, несколько вырастет трафик, но незначительно.


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

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


 




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


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

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