Sql of note: Difference between revisions
From Federal Burro of Information
Jump to navigationJump to search
Line 76: | Line 76: | ||
https://blog.jooq.org/2017/04/20/how-to-calculate-multiple-aggregate-functions-in-a-single-query/ | https://blog.jooq.org/2017/04/20/how-to-calculate-multiple-aggregate-functions-in-a-single-query/ | ||
== generate a sequence == | |||
<pre> | |||
select a.a as a, b.a as b , c.a as c , | |||
CAST(a.a AS INTEGER ) as aint, | |||
CAST(b.a AS INTEGER ) as bint, | |||
CAST(c.a AS INTEGER ) AS cint, | |||
CAST(a.a AS INTEGER ) * 100 + CAST(b.a AS INTEGER ) * 10 + CAST(c.a AS INTEGER ) AS sum | |||
from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a | |||
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b | |||
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c ; | |||
</pre> |
Revision as of 18:21, 30 October 2018
Example of Time bucket
select from_unixtime(timestamp-timestamp%3600)as time, count(*) from table where data like 'Destination directory %does not exist at%' and FROM_UNIXTIME(timestamp) > subdate(now(),interval 4 day) group by timestamp-timestamp%3600 order by time;
sqlite
.tables
.schema
Date / Time
These all return dates and times.
Last day of this month:
SELECT date('now','start of month','+1 month','-1 day');
the first day of this monnth:
SELECT date('now','start of month');
first day of last month:
SELECT date('now','start of month','-1 month');
last day of last month:
SELECT date('now','start of month','-1 day');
get epoch:
select strftime( '%s' , "2012-09-30") ;
convert from epoch to date:
SELECT datetime( 1092941466 , 'unixepoch');
convert back and forth:
SELECT datetime( strftime( '%s' , "2012-09-30") , 'unixepoch');
X in Y
SELECT filename FROM source WHERE hash NOT IN (SELECT hash FROM destination);
Also see
transpose wide tables
https://www.periscopedata.com/blog/using-row-numbering-and-full-joins-to-transpose-wide-tables
grouping
Redshift:
https://docs.aws.amazon.com/redshift/latest/dg/r_Examples_of_avg_WF.html
multiple agregates
https://blog.jooq.org/2017/04/20/how-to-calculate-multiple-aggregate-functions-in-a-single-query/
generate a sequence
select a.a as a, b.a as b , c.a as c , CAST(a.a AS INTEGER ) as aint, CAST(b.a AS INTEGER ) as bint, CAST(c.a AS INTEGER ) AS cint, CAST(a.a AS INTEGER ) * 100 + CAST(b.a AS INTEGER ) * 10 + CAST(c.a AS INTEGER ) AS sum from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c ;