Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с запросом [D7, dBase, FoxPro]


Goast ©   (2005-12-15 14:38:00) 

Здравствуйте мастера…. ….есть таблица телефонных звонков

8:01     ляля     тратра    бебе
8:14     ляля     тратра    бебе
8:34     ляля     тратра    бебе
9:10     ляля     тратра    бебе
10:05     ляля     тратра    бебе
10:44     ляля     тратра    бебе

Возможно ли одним sql запросом вывести след. информацию
От      до     кол-во звонков
8:00    9:00         3
9:00   10:00        1
10:00 11:00        2

Т.е. вывести сколько же записей (звонков) соответствует конкретному промежутку времени…надеюсь вы меня поняли…всю голову сломал кроме как делать 24 sql запроса и в каждом считать кол-во записей умнее ничего не придумал…Спасибо


palva   (2005-12-15 22:32:00) [1]

Вы, естественно, работаете на MySQL. Привожу работающий скрипт

DROP TABLE IF EXISTS timdat;
CREATE TABLE timdat (t TIME, emp VARCHAR(10));
INSERT INTO timdat(t) values
 ('2:08'),('2:09'),('2:10'),('3:08'),('4:08'),('4:09'),('23:08');
SELECT HOUR(t) AS 'от', HOUR(t)+1 AS 'до', COUNT(t) AS 'колич'
 FROM timdat GROUP BY 'от' ORDER BY 'от';

от до колич
 2  3     3
 3  4     1
 4  5     2
23 24     1


sniknik   (2005-12-15 17:04:00) [2]

> все очень просто все поля string
начинать надо от типа базы, подключения, после поля.

как

SELECT Int(Left(TimeField, InStr(TimeField, ':')-1)) as TimeFld, Count(*) as Col
FROM Table1
GROUP BY Int(Left(TimeField, InStr(TimeField, ':')-1))
ORDER BY 1

но не скажу где. ;)


Johnmen   (2005-12-15 16:34:00) [3]

>Goast   (15.12.05 16:27) [10]
>все очень просто все поля string

Прошу прощения, но этот случай клинический :)
А значит никак...


Goast   (2005-12-15 16:27:00) [4]


> Johnmen ©   (15.12.05 16:25) [9]
> Ну господа, я же не знаю, что у вас каких типов!

все очень просто все поля string


Johnmen   (2005-12-15 16:25:00) [5]

Ну господа, я же не знаю, что у вас каких типов!


Goast   (2005-12-15 16:07:00) [6]


> highlander ©   (15.12.05 16:06) [7]
>
> >  ФункцияВыделенияЧасов(TimeField),
>
> А вот интересно - как организовать такую функцию и как она
> будет выглядеть??

надеюсь вы не у меня спрашиваете?! т.к. я даже не представляю...;)


highlander   (2005-12-15 16:06:00) [7]


>  ФункцияВыделенияЧасов(TimeField),

А вот интересно - как организовать такую функцию и как она будет выглядеть??


Goast   (2005-12-15 16:02:00) [8]


> ФункцияВыделенияЧасов(TimeField),

какая функция выделиня часов в sql pos-не катит...:)


Goast   (2005-12-15 15:39:00) [9]


> Sergey13 ©   (15.12.05 15:16) [4]
> 2 [3] Goast   (15.12.05 15:09)
> >  походу придется делать 24 запроса....:)
> Сделай один. Но с 24 union-ами. 8-)

издеваются блин....:(


Sergey13   (2005-12-15 15:16:00) [10]

2 [3] Goast   (15.12.05 15:09)
>  походу придется делать 24 запроса....:)
Сделай один. Но с 24 union-ами. 8-)


Goast   (2005-12-15 15:09:00) [11]


> -=S..S=-   (15.12.05 15:00) [2]
> можно отрезать в значении времени до ":" и сгрупировать
> по этому
> select count(*), Left( field1 , 7 ) AS y from table group
> by y, order by field1 desc
> что то в этом духе ... но не помню как взять символы до
> ":" потому как может быть двух значное число. поищи что
> то типа pos может поддержывает

ничего не понял....:( походу придется делать 24 запроса....:)


-=S..S=-   (2005-12-15 15:00:00) [12]

можно отрезать в значении времени до ":" и сгрупировать по этому
select count(*), Left( field1 , 7 ) AS y from table group by y, order by field1 desc
что то в этом духе ... но не помню как взять символы до ":" потому как может быть двух значное число. поищи что то типа pos может поддержывает


Johnmen   (2005-12-15 14:59:00) [13]

Одним запросом для dBase, FoxPro вряд ли...:)
А общая схема:
SELECT  
 ФункцияВыделенияЧасов(TimeField),
 ФункцияВыделенияЧасов(TimeField) + <1 час>,
 COUNT(*)
FROM Table
GROUP BY <I поле запроса>


Наверх

Титульная страница Поиск, карта сайта Написать письмо