Robert,
This: (100 * Number_Deleted_Rows / ( Number_Rows + Number_Deleted_Rows ) )
may NOT return the result you expect!
100 has no decimal positions and in this way it is considered as being
integer, so the result will be an integer again with truncated numbers!
For example: (100 * 1000 / 1000000) will return 0 (without decimal
positions!),
While (100.0 * 1000 / 1000000) will return 0.1
Mit freundlichen Grüßen / Best regards
Birgitta Hauser
"Shoot for the moon, even if you miss, you'll land among the stars." (Les
Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training them
and keeping them!"
-----Ursprüngliche Nachricht-----
Von: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] Im Auftrag von Robert Clay
Gesendet: Monday, 16.9 2013 21:45
An: midrange-l@xxxxxxxxxxxx; midrange-l@xxxxxxxxxxxx
Betreff: Re: Need assistance with SQL statement over QSYS2.SYSTABLESTAT
Scott,
You're right.
Combined with the other suggestions, how about this?
CAST(CASE
WHEN ( Number_Deleted_Rows = 0 ) THEN 0
WHEN ( Number_Rows = 0 ) AND ( Number_Deleted_Rows > 0 ) THEN
100.00
WHEN Number_Rows = Number_Deleted_Rows THEN
50.00
ELSE (100 * Number_Deleted_Rows / ( Number_Rows +
Number_Deleted_Rows ) )
END
AS DECIMAL( 5 , 2 )
) AS Percent_Deleted
Might not even need the third WHEN.
Robert
"Contrariwise, if it was so, it might be; and if it were so, it would be;
but as it isn't, it ain't. That's logic."--Tweedledee On 09/16/2013 2:40 PM,
Scott Mildenberger wrote:
Robert,
Your first two whens can be combined into one
WHEN Number_Deleted_Rows = 0 THEN 0
Also, your very last when doesn't return 'Percent deleted', consider 1 Row
and 5 deleted. Returns 20%. The more deleted the smaller the percent, is
that what you really want? You may be able to use the when before that as
an ELSE catchall.
Scott Mildenberger
Programmer/Analyst
Davis Transport Inc.
Missoula, MT
406-728-5510 x128
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe, unsubscribe,
or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at
http://archive.midrange.com/midrange-l.
As an Amazon Associate we earn from qualifying purchases.