2016-08-10 17:31 GMT+02:00 Cecil Westerhof <cldwester...@gmail.com>:

> 2016-08-10 17:13 GMT+02:00 Cecil Westerhof <cldwester...@gmail.com>:
>
>> Question 2:
>>
>>> Not sure how you want to slice data, I am assuming you mean you want to
>>> know how many values (as in percent of total) falls within each slice? If
>>> so, this should work:
>>>
>>
>> ​Yes, that is what I mean. I am going to try it out.​
>>
>>
>>
>>
>>> WITH ST(cAll) AS (
>>>     SELECT COUNT(*) FROM vmstat
>>> ), SL(Slice) AS (
>>>     SELECT (CAST(((100 * COUNT(*) / ST.cAll) / 5) AS INT) * 5)
>>>      FROM vmstat, ST
>>> )
>>> SELECT Slice||' - '||(Slice+5), (100 * COUNT(*) / ST.cAll) AS Perc
>>>   FROM SL, ST
>>>  GROUP BY Slice
>>>
>>> [Might need a little fiddling to produce the output exactly how you want
>>> it, but the basics should be clear]
>>>
>>
> ​Does not work. SL gives a table that has exactly one element.
>


​I have something working. It is a bit labour intensive (that is why I went
for slices of 10%), so if someone has a better option …

WITH ST(onePercent) AS (
    SELECT COUNT(*) / 100.0 FROM vmstat
), SL(Slice, Count, Percent) AS (
    SELECT ' 0 -  10', COUNT(*), COUNT(*) / onePercent FROM vmstat, ST
WHERE idletime >=  0 AND idletime <=   10
    UNION
    SELECT '11 -  20', COUNT(*), COUNT(*) / onePercent  FROM vmstat, ST
WHERE idletime >= 11 AND idletime <=   20
    UNION
    SELECT '21 -  30', COUNT(*), COUNT(*) / onePercent  FROM vmstat, ST
WHERE idletime >= 21 AND idletime <=   30
    UNION
    SELECT '31 -  40', COUNT(*), COUNT(*) / onePercent  FROM vmstat, ST
WHERE idletime >= 31 AND idletime <=   40
    UNION
    SELECT '41 -  50', COUNT(*), COUNT(*) / onePercent  FROM vmstat, ST
WHERE idletime >= 41 AND idletime <=   50
    UNION
    SELECT '51 -  60', COUNT(*), COUNT(*) / onePercent  FROM vmstat, ST
WHERE idletime >= 51 AND idletime <=   60
    UNION
    SELECT '61 -  70', COUNT(*), COUNT(*) / onePercent  FROM vmstat, ST
WHERE idletime >= 61 AND idletime <=   70
    UNION
    SELECT '71 -  80', COUNT(*), COUNT(*) / onePercent  FROM vmstat, ST
WHERE idletime >= 71 AND idletime <=   80
    UNION
    SELECT '81 -  90', COUNT(*), COUNT(*) / onePercent  FROM vmstat, ST
WHERE idletime >= 81 AND idletime <=   90
    UNION
    SELECT '91 - 100', COUNT(*), COUNT(*) / onePercent  FROM vmstat, ST
WHERE idletime >= 91 AND idletime <= 100
)
SELECT Slice, ROUND(Percent, 2) AS Percentage
FROM SL
ORDER BY Percentage DESC



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

Reply via email to