Firebird SQL Development
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsDatabasesFirebird SQL Development

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old October 1st, 2010, 03:33 AM
kcauchi kcauchi is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Oct 2010
Posts: 1 kcauchi User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 15 m 38 sec
Reputation Power: 0
Firebird SQL

I am creating an sql that gets me the number of records per 15 minutes. But i am stuck. I managed to get it every 1 minute which is not good enough. here is what ive got so far.. how can i alter it?

SELECT COUNT(*) as COUNTER,
CAST(CAST( EXTRACT(DAY FROM LOGS.DATETIME)||
'.'||
EXTRACT(MONTH FROM LOGS.DATETIME)||
'.'||
EXTRACT(YEAR FROM LOGS.DATETIME) AS DATE) ||
' ' ||
CAST( EXTRACT(HOUR FROM LOGS.DATETIME)||
'.' ||
EXTRACT(MINUTE FROM LOGS.DATETIME)||
'.00' AS TIME) AS TIMESTAMP) AS SPECIFIC_TIME

FROM LOGS

WHERE
LOGS.DATETIME >= '2010-10-01 04:12:00' AND
LOGS.DATETIME <= '2010-10-01 10:12:59' AND
LOGS.SCANRESULT = 'OK'

GROUP BY
SPECIFIC_TIME

ORDER BY SPECIFIC_TIME ASC

Reply With Quote
  #2  
Old October 1st, 2010, 04:32 AM
nagysz nagysz is offline
Contributing User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Jul 2006
Posts: 200 nagysz User rank is Sergeant (500 - 2000 Reputation Level)nagysz User rank is Sergeant (500 - 2000 Reputation Level)nagysz User rank is Sergeant (500 - 2000 Reputation Level)nagysz User rank is Sergeant (500 - 2000 Reputation Level)nagysz User rank is Sergeant (500 - 2000 Reputation Level) 
Time spent in forums: 1 Day 11 h 19 m 28 sec
Reputation Power: 13
why do you need this CAST thingy? it eats up a lot of CPU and i don't think you really need it

how about this?

SELECT COUNT(*) AS counter, "DATETIME" FROM logs
WHERE "DATETIME" BETWEEN datetime1 AND datetime2
AND scanresult='OK'
GROUP BY "DATETIME"

and datetime1,datetime2 parameters should be in datetime format, or simply put the cast there [ like CAST '2010-10-01 04:12:00' AS DATETIME) ]

i bet it will be much faster, and for me it looks even easier

PS1: watch out that DATETIME filed name, because it is a reserver word so you should write it in UPPERCASE and between ""

PS2: you don't need order by if you have a group by clause


Quote:
Originally Posted by kcauchi
I am creating an sql that gets me the number of records per 15 minutes. But i am stuck. I managed to get it every 1 minute which is not good enough. here is what ive got so far.. how can i alter it?

SELECT COUNT(*) as COUNTER,
CAST(CAST( EXTRACT(DAY FROM LOGS.DATETIME)||
'.'||
EXTRACT(MONTH FROM LOGS.DATETIME)||
'.'||
EXTRACT(YEAR FROM LOGS.DATETIME) AS DATE) ||
' ' ||
CAST( EXTRACT(HOUR FROM LOGS.DATETIME)||
'.' ||
EXTRACT(MINUTE FROM LOGS.DATETIME)||
'.00' AS TIME) AS TIMESTAMP) AS SPECIFIC_TIME

FROM LOGS

WHERE
LOGS.DATETIME >= '2010-10-01 04:12:00' AND
LOGS.DATETIME <= '2010-10-01 10:12:59' AND
LOGS.SCANRESULT = 'OK'

GROUP BY
SPECIFIC_TIME

ORDER BY SPECIFIC_TIME ASC

Reply With Quote
  #3  
Old October 1st, 2010, 04:47 AM
E_Pluribus_Unum E_Pluribus_Unum is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Apr 2009
Posts: 25 E_Pluribus_Unum User rank is Corporal (100 - 500 Reputation Level)E_Pluribus_Unum User rank is Corporal (100 - 500 Reputation Level)E_Pluribus_Unum User rank is Corporal (100 - 500 Reputation Level)E_Pluribus_Unum User rank is Corporal (100 - 500 Reputation Level) 
Time spent in forums: 3 h 33 m 29 sec
Reputation Power: 0
Hi!

This is very simple :

Code:
SELECT
    COUNT(*) as COUNTER
FROM logs l
WHERE ...
GROUP BY
    EXTRACT(YEAR FROM l.datetime),
    EXTRACT(MONTH FROM l.datetime),
    EXTRACT(DAY FROM l.datetime),
    EXTRACT(HOUR FROM l.datetime),
    div(EXTRACT(MINUTE FROM l.datetime),15)

Reply With Quote
Reply

Viewing: Dev Shed ForumsDatabasesFirebird SQL Development > Firebird SQL

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap