案例1:case when 案例分析
2013-07-31 12:12
141 查看
案例:得出此结果:(表g_test 时间列update_time date 功率列pm number) 月份、功率分布情况、数量2013-01 功率小于70 302013-01 功率70 212013-01 功率71 302013-01 功率72 352013-01 功率73 402013-01 功率74 442013-01 功率75 412013-01 功率大于75 402013-02 功率72 352013-02 功率73 402013-02 功率74 442013-02 功率75 412013-02 功率大于75 40注:pm值小数点不算,71.1算做71,71.9也算作71。根据update_time,分别汇总2013年1月至5月的数据。 方法一:SQL>SELECT to_char(update_time, 'yyyymm'),CASE WHEN trunc(pm) < 70 THEN '功率小于70'WHEN trunc(pm) >= 76 THEN '功率大于等于76'ELSE '功率'|| to_char(trunc(pm))END 功率分布情况,COUNT(pm)FROM g_testWHERE to_char(update_time, 'yyyymm') BETWEEN '201301' AND '201305'GROUP BY to_char(update_time, 'yyyymm'),CASE WHEN trunc(pm) < 70 THEN '功率小于70'WHEN trunc(pm) >= 76 THEN '功率大于等于76'ELSE '功率'|| to_char(trunc(pm))ENDORDER BY to_char(update_time, 'yyyymm'); 方法二: SELECT to_char(update_time, 'yyyy-mm') as 月份,
CASE WHEN trunc(pm) < 70 THEN '功率小于70'
WHEN TRUNC(pm) >= 76 THEN '功率大于等于76'
WHEN pm IS NULL THEN 'PM异常值'
ELSE '功率'|| to_char(trunc(pm))
END 功率分布情况,
COUNT(*) AS "统计数量"
FROM g_test
WHERE
update_time >= to_date('2013-01-01 00:00:00','YYYY-MM-DD hh24:mi:ss')
AND update_time <= to_date('2013-06-01 00:00:00','YYYY-MM-DD hh24:mi:ss')
GROUP BY to_char(update_time, 'yyyy-mm'),
CASE WHEN trunc(pm) < 70 THEN '功率小于70'
WHEN trunc(pm) >= 76 THEN '功率大于等于76'
WHEN pm IS NULL THEN 'PM异常值'
ELSE '功率'|| to_char(trunc(pm))
END
ORDER BY to_char(update_time, 'yyyy-mm');
1、注意时间,尽量把表达式写在右边。
2、处理空值,PM异常值。
3、count(*) 即可,不用count(pm),否则异常值统计不出来。月份功率分布情况统计数量
-------------- --------------- ----------
2013-03功率74 14135
2013-03功率75 1620
2013-03功率大于等于76 1039
2013-03功率小于70 10705
2013-04PM异常值 15
2013-04功率70 1915
2013-04功率71 3261
2013-04功率72 6238
2013-04功率73 8536
2013-04功率74 5780
2013-04功率75 1251
本文出自 “贰货的青春” 博客,谢绝转载!
CASE WHEN trunc(pm) < 70 THEN '功率小于70'
WHEN TRUNC(pm) >= 76 THEN '功率大于等于76'
WHEN pm IS NULL THEN 'PM异常值'
ELSE '功率'|| to_char(trunc(pm))
END 功率分布情况,
COUNT(*) AS "统计数量"
FROM g_test
WHERE
update_time >= to_date('2013-01-01 00:00:00','YYYY-MM-DD hh24:mi:ss')
AND update_time <= to_date('2013-06-01 00:00:00','YYYY-MM-DD hh24:mi:ss')
GROUP BY to_char(update_time, 'yyyy-mm'),
CASE WHEN trunc(pm) < 70 THEN '功率小于70'
WHEN trunc(pm) >= 76 THEN '功率大于等于76'
WHEN pm IS NULL THEN 'PM异常值'
ELSE '功率'|| to_char(trunc(pm))
END
ORDER BY to_char(update_time, 'yyyy-mm');
1、注意时间,尽量把表达式写在右边。
2、处理空值,PM异常值。
3、count(*) 即可,不用count(pm),否则异常值统计不出来。月份功率分布情况统计数量
-------------- --------------- ----------
2013-03功率74 14135
2013-03功率75 1620
2013-03功率大于等于76 1039
2013-03功率小于70 10705
2013-04PM异常值 15
2013-04功率70 1915
2013-04功率71 3261
2013-04功率72 6238
2013-04功率73 8536
2013-04功率74 5780
2013-04功率75 1251
本文出自 “贰货的青春” 博客,谢绝转载!
相关文章推荐
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- 有关case when的两个sql案例
- case when then与decode分析比较
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- SQL语句使用09--------案例03(case when)
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- ORACLE分析函数over(partition by...)中使用case when达到多重分组的效果
- ORACLE分析函数over(partition by...)中使用case when达到多重分组的效果
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- CASE WHEN THEN 简单案例应用
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- case表达式输入参数分析的一个比较好的案例
- MYSQL 多条件查询(case when then else end)案例
- 优化案例 | CASE WHEN进行SQL改写优化
- 大数据Spark “蘑菇云”行动第87课:Hive嵌套查询与Case、When、Then案例实战
- 第二次作业:软件案例分析之微信
- 第二次作业:基于王者荣耀案例分析
- 关于Go的闭包、匿名函数和defer的结合使用案例分析
- list之extend方法的一个错误使用案例分析