Thursday, June 7, 2012

Query BI

-- PERCENTILE USE TERADATA


SELECT PCT,AVG(TARIF),COUNT(DISTINCT  KODE)
FROM (SELECT A.*,(ROW_NUMBER() OVER (ORDER BY   TARIF ) -1) * 100 / COUNT(*) OVER() +1 AS PCT
FROM (SELECT KODE,SUM(TARIFTARIF
FROM TABLE_NAME
WHERE MONTH = 201204
GROUP BY KODE) A
) B
GROUP BY PCT;




--mysql

SELECT PCT,AVG(TARIF),COUNT(KODE) TOTAL FROM
(SELECT CAST((@ROWNUM:=@ROWNUM+1)*100/TOTAL AS SIGNED) AS `PCT`,A.*
FROM 
TABLE_NAME A,
(SELECT @ROWNUM:=0) R,
(SELECT COUNT(*) TOTAL FROM  TABLE_NAME ) T
ORDER BY TARIF) P
GROUP BY PCT;