Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.02.2014, 17:52
Новичок на форуме
Отправить личное сообщение для crack000 Посмотреть профиль Найти все сообщения от crack000
 
Регистрация: 17.02.2014
Сообщений: 1

требуется помощь по минимизации SQL запроса
Написал запрос количество людей конкретной организации прошедших через проходную за 1 день по двум интервалам времени.
Нужно сделать по каждому числу месяца по этим интервалам. Что можно придумать, чтобы не перечислять каждое число месяца?

[SRC sql]SET ANSI_NULLS OFF
declare @d1 as DATETIME ;
declare @d2 as DATETIME ;
declare @d3 as DATETIME ;
declare @d4 as DATETIME ;

select @d1 = '2013-10-01 04:00' -- начало утра
select @d2 = '2013-10-01 09:00' -- конец утра
select @d3 = '2013-10-01 16:00' -- начало вечера
select @d4 = '2013-10-01 20:30' -- конец вечера

Select Count(*) from pLogData Where HozOrgan in
(select Distinct ID from pList where section LIKE '60')
and TimeVal < @d2 AND TimeVal > @d1 and Event=32 and Mode = 1

Select Count(*) from pLogData Where HozOrgan in
(select Distinct ID from pList where section LIKE '60')
and TimeVal < @d4 AND TimeVal > @d3 and Event=32 and Mode = 1[/SRC]
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2014, 10:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от crack000
Что можно придумать, чтобы не перечислять каждое число месяца?
Как вариант - вложеный запрос.
1-вый выводит список дат
2-рой по этой дате количество людей
в сумме получится табличка вида
<дата><количество>
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2014, 13:38
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Цитата:
Написал запрос количество людей конкретной организации прошедших через проходную за 1 день по двум интервалам времени.
Заметив слово количество думайте об агрегатных функциях и группировке. Вместо баяна типа

Select Count(*) from pLogData Where HozOrgan in
(select Distinct ID from pList where section LIKE '60')
and TimeVal < @d2 AND TimeVal > @d1 and Event=32 and Mode = 1

типа такого баяна

Select Count(*) from pLogData
where TimeVal < @d2 AND TimeVal > @d1 and Event=32 and Mode = 1
group by HozOrgan.ID having section LIKE '60'

Не видя DDL профтыкал по наитию.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется помощь bboulevard Ваши сайты и скрипты 14 02.12.2013 17:47
регулярка для парсинга SQL запроса Yurik Общие вопросы Javascript 2 09.12.2011 15:08
Работа с массивами. Требуется помощь. Кристи Общие вопросы Javascript 3 08.02.2011 18:00
Требуется помощь. Дмитрий Котов Работа 9 22.02.2010 20:02
Цитирование текста в комментариях. Требуется помощь. shinjuku Общие вопросы Javascript 3 07.07.2008 14:19