日常工作中,我们常常需要开发报表或者统计一些数据的百分比、合计,这时候,下面的几个函数可以很快地解决问题 。它们不仅sql语句少,而且性能更好。下图即为我们这次要统计的结果展示。
常用的函数如下:case when...then...else...end, regexp_like, ratio_to_report(score) OVER(), rollup, grouping,本文只是展示在sql中如何用这些函数巧妙地统计出这种效果,具体用法可自查阅资料了解更多细节。
首先,需要你统计的东西,类似这样子:
本人的表由于数据需要转换,所以需要使用下面的sql语句进行处理。如有不同,请跳过这一段。
SELECT region, SUM(CASE region
WHEN 'Africa' THEN 1
WHEN 'Asia' THEN 1
WHEN 'Europe' THEN 1
WHEN 'NorthAmerica' THEN 1
WHEN 'Oceania' THEN 1
WHEN 'SouthAmerica' THEN 1
WHEN 'unkonwn' THEN 1
ELSE 0
END) AS score
FROM (
SELECT CASE
WHEN regexp_like(substr(TRANSDAY, 0, 1), '[A-C]') THEN 'Africa'
WHEN regexp_like(substr(TRANSDAY, 0, 1), '[J-R]') THEN 'Asia'
WHEN regexp_like(substr(TRANSDAY, 0, 1), '