On 2017/04/12 3:08 PM, Ron Barnes wrote:
Hello Ryan,

That Code below worked as you said it should.  Awesome! And Thank you!

I now have the days difference for each row.

I have one other question if I may pose it to you, how do I count the number of 
rows, less than a day, or a week or a year and so forth?

I tried this code and a few variants of it but I keep getting errors when 
trying to execute.

Would you examine my code for errors?

SELECT        category, COUNT(*) AS Expr1
FROM

((SELECT  replace(substr(VI_Creation_Date, 1, 10), '/','-')||' 12:00:00'
AS ISO_Date, julianday('Now') - julianday(replace(substr(VI_Creation_Date,1, 
10), '/','-')||' 12:00:00') AS DaysSince)

WHEN DaysSince < 2 THEN 'Under 1 Day'
WHEN DaysSince < 8 THEN 'Under 1 Week'
WHEN DaysSince < 32 THEN 'Under 1 Month'
WHEN DaysSince < 366 THEN 'Under 1 Year'
WHEN DaysSince < 366 THEN 'Under 1 Year'
WHEN DaysSince < 731 THEN 'Under 2 Year'
WHEN DaysSince < 1826 THEN 'Under 5 Years'
WHEN DaysSince < 3651 THEN 'Under 10 Years'
ELSE 'Over 10 Years' END)  AS category
FROM   Volume_Information) derivedtbl_1
GROUP BY category

Nothing much wrong with the idea, but I suppose the syntax is not clear.

This works by me:

SELECT G.cat, COUNT(*) AS qty
  FROM (
    SELECT C.days, CASE
             WHEN C.days <    1 THEN '1. Under 1 Day'
             WHEN C.days <    7 THEN '2. Under 1 Week'
             WHEN C.days <   31 THEN '3. Under 1 Month'
             WHEN C.days <  366 THEN '4. Under 1 Year'
             WHEN C.days <  731 THEN '5. Under 2 Years'
             WHEN C.days < 1826 THEN '6. Under 5 Years'
             WHEN C.days < 3651 THEN '7. Under 10 Years'
             ELSE '8. Over 10 Years'
           END AS cat
      FROM (
SELECT julianday('now')-julianday(replace(substr(VI_Creation_Date,1,10),'/','-')) AS days
           FROM Volume_Information
        ) AS C
    ) AS G
 GROUP BY G.cat
 ORDER BY G.cat
;


I took the liberty of fixing the cut-offs a bit to better reflect the truth and added a number to the category so ordering would make sense.

Note that these figures are not cumulative - i.e. if there are 25 items this month, of which 10 items for this week and 2 of them are in the last day, then the results will show:
2 Under 1 Day
8 Under 1 Week
15 Under 1 Month
While, technically, there are 25 items for the month and 10 items under the last week...

This may be exactly as you need, but if not, let me know then we can try another way.

Cheers,
Ryan

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to