Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

For Frank Kulash-See about adding information to a previous query

658699Jan 20 2009 — edited Jan 23 2009
In an earlier post Frank Kulash helped me by putting together this query, so if Frank is available to help me again, i would be grateful.

What i was wanting to see if it would be possible to add a line to display what the percent would be by dividing the wait time by the count??
WITH	rng	AS
(	-- Begin sub-query rng, to compute rng_num, cnt
SELECT	wait_time
,	COUNT (*)	AS cnt
,	MAX	(
		CASE
			WHEN wait_time <= 10	THEN	0
			WHEN wait_time <= 30	THEN	11
			WHEN wait_time <= 60	THEN	31
						ELSE	61
		END
		)	AS rng_num
	FROM	motor_assist2
--	where((:p53_fiscal_yr IS NULL
--	OR :p53_fiscal_yr = TO_CHAR (ADD_MONTHS (datetime, 6), 'YYYY'))
--	OR (:p53_month IS NULL OR :P53_month = TO_CHAR(DATETIME,'MM')
	GROUP BY	wait_time
)	-- End sub-query rng, to compute rng_num, cnt
--
--
,	rnk	AS
(	-- Begin sub_query rnk, to compute rnk_num, txt
	SELECT	rng.*
	,	ROW_NUMBER () OVER
		(	PARTITION BY	rng_num
			ORDER BY	cnt		DESC
			,		wait_time
		)			AS rnk_num
	,	TO_CHAR (wait_time)
		|| '(Min):Count:'
		|| TO_CHAR (cnt)	AS txt
	FROM	rng
)	-- End sub_query rnk, to compute rnk_num, txt
--
--
,	all_rnk	AS
(	-- Begin sub-query all_rnk, list of all possible rnk_nums
	SELECT DISTINCT	rnk_num
	FROM	rnk
)	-- End sub-query all_rnk, list of all possible rnk_nums
SELECT	CASE
		WHEN  GROUPING (a.rnk_num) = 0
		THEN  TO_CHAR (a.rnk_num)
		ELSE  'Total:'
	END	AS rnk_txt
,	CASE
		WHEN  GROUPING (a.rnk_num) = 0
		THEN	MAX (CASE WHEN rng_num = 0  THEN txt END)
		ELSE  'Count: ' || TO_CHAR	(
			SUM (CASE WHEN rng_num = 0  THEN cnt END)
						)
	END	AS "0-10MIN"
,	CASE
		WHEN  GROUPING (a.rnk_num) = 0
		THEN	MAX (CASE WHEN rng_num = 11  THEN txt END)
		ELSE  'Count: ' || TO_CHAR	(
			SUM (CASE WHEN rng_num = 11  THEN cnt END)
						)
	END	AS "11-30MIN"
,	CASE
		WHEN  GROUPING (a.rnk_num) = 0
		THEN	MAX (CASE WHEN rng_num = 31  THEN txt END)
		ELSE  'Count: ' || TO_CHAR	(
			SUM (CASE WHEN rng_num = 31  THEN cnt END)
						)
	END	AS "31-60MIN"
,	CASE
		WHEN  GROUPING (a.rnk_num) = 0
		THEN	MAX (CASE WHEN rng_num = 61  THEN txt END)
		ELSE  'Count: ' || TO_CHAR	(
			SUM (CASE WHEN rng_num = 61  THEN cnt END)
						)
	END	AS "61+MIN"
FROM		all_rnk	a
LEFT OUTER JOIN	rnk	r  ON a.rnk_num	= r.rnk_num
GROUP BY	ROLLUP (a.rnk_num)
ORDER BY	a.rnk_num
;
Thanks
Deanna

Edited by: Dclipse03 on Jan 23, 2009 8:59 AM
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 20 2009
Added on Jan 20 2009
3 comments
535 views