Home > Ask the Oracle Experts > SQL Questions & Answers > Aggregates for date periods
Ask The Oracle Expert: Questions & Answers
EMAIL THIS

Aggregates for date periods

Rudy Limeback EXPERT RESPONSE FROM: Rudy Limeback

Pose a Question
Other Oracle Categories
Meet all Oracle Experts
Become an Expert for this site


Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us   


>
QUESTION POSED ON: 10 October 2007
How can I generate daily, weekly, monthly, quarterly, and yearly reports based on this sample data:
TestDate    Item  Result
--------    ----  ------
APR-1-2007  ABC   FAILED
APR-2-2007  DEF   PASSED
APR-3-2007  GHI   FAILED
...

The query should calculate the total number of FAILED and PASSED for a certain period (e.g. daily, weekly...), such as:

Period (Monthly)            Failure Rate (%)
------                      -------
AUG-10-2007 to SEP-10-2007  2.05
SEP-10-2007 to OCT-10-2007  1.80
OCT-10-2007 to NOV-10-2007  5.56
...

>
EXPERT RESPONSE

One easy way to generate the date ranges for the desired periods is with date arithmetic using a starting date and an integers table.

Let's say we need to see 12 monthly periods, starting with AUG-10-2007. Assuming our integers table has the ten numbers 0 through 9, the query to generate the ranges would be:

select '2007-08-10' + 
         interval 10*tens.i + units.i month  as startdate
     , '2007-08-10' + 
         interval 10*tens.i + units.i + 1 month  as enddate
  from integers tens
cross
  join integers units
 where 10*tens.i + units.i between 0 and 11
order 
    by startdate

Now we simply use a LEFT OUTER JOIN to the data:

select startdate || ' to ' || enddate 
          as period
     , case when count(TestDate) = 0 
            then null 
            else 
       100.0 
       * count(case when Result='FAILED' then 1 end) 
       / count(TestDate)  end
          as FailureRate
  from (
       select '2007-08-10' + 
                interval 10*tens.i + units.i month  
                   as startdate
            , '2007-08-10' + 
                interval 10*tens.i + units.i + 1 month  
                   as enddate
         from integers tens
       cross
         join integers units
        where 10*tens.i + units.i between 0 and 11
       ) as periods
left outer
  join yourtable
    on yourtable.TestDate >= periods.startdate
   and yourtable.TestDate  < periods.enddate
group 
    by period

Notice how we've pushed the cross join down into a subquery in order to be able use the calculated column aliases startdate and enddate in the outer query's join.


Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us   


RELATED CONTENT
SQL
Using the SQL date function to find aggregate totals by month
Using an SQL SELECT statement from a non-existing table
Using LEFT OUTER JOIN query to get zero row counts in SQL
How to return multiple values for THEN clause in an SQL CASE expression
Can I concatenate row values in SQL?
Should I try to avoid a LEFT OUTER JOIN in SQL?
Tips for derived tables in SQL and using FULL OUTER JOINs
How to write an SQL query for two foreign keys to the same table
How to create an SQL CHECK constraint for two letters
How to return a zero in SQL instead of no row back for a select count

RELATED RESOURCES
2020software.com, trial software downloads for accounting software, ERP software, CRM software and business software systems
Search Bitpipe.com for the latest white papers and business webcasts
Whatis.com, the online computer dictionary



Search and Browse the Expert Answer Center
Search and browse more than 25,000 question and answer pairs from more than 250 TechTarget industry experts.
Browse our Expert Advice



Oracle White Papers: Fusion Middleware
HomeNewsTopicsTipsAsk the ExpertsMultimediaWhite PapersProductsBlogs
About Us  |  Contact Us  |  For Advertisers  |  For Business Partners  |  Site Index  |  RSS
SEARCH 
TechTarget provides enterprise IT professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective IT purchase decisions and managing their organizations' IT projects - with its network of technology-specific Web sites, events and magazines.

TechTarget Corporate Web Site  |  Media Kits  |  Reprints  |  Site Map




All Rights Reserved, Copyright 2003 - 2008, TechTarget | Read our Privacy Policy
  TechTarget - The IT Media ROI Experts