网站建设费用进会计什么科目,wordpress插件都是英文,怎么做网站访问被拒绝,医生做兼职有什么网站吗系列文章目录
【SQL开发实战技巧】系列#xff08;一#xff09;:关于SQL不得不说的那些事 【SQL开发实战技巧】系列#xff08;二#xff09;#xff1a;简单单表查询 【SQL开发实战技巧】系列#xff08;三#xff09;#xff1a;SQL排序的那些事 【SQL开发实战技巧…系列文章目录
【SQL开发实战技巧】系列一:关于SQL不得不说的那些事 【SQL开发实战技巧】系列二简单单表查询 【SQL开发实战技巧】系列三SQL排序的那些事 【SQL开发实战技巧】系列四从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列五从执行计划看IN、EXISTS 和 INNER JOIN效率我们要分场景不要死记网上结论 【SQL开发实战技巧】系列六从执行计划看NOT IN、NOT EXISTS 和 LEFT JOIN效率记住内外关联条件不要乱放 【SQL开发实战技巧】系列七从有重复数据前提下如何比较出两个表中的差异数据及对应条数聊起 【SQL开发实战技巧】系列八聊聊如何插入数据时比约束更灵活的限制数据插入以及怎么一个insert语句同时插入多张表 【SQL开发实战技巧】系列九一个update误把其他列数据更新成空了Merge改写update给你五种删除重复数据的写法 【SQL开发实战技巧】系列十从拆分字符串、替换字符串以及统计字符串出现次数说起 【SQL开发实战技巧】系列十一拿几个案例讲讲translate|regexp_replace|listagg|wmsys.wm_concat|substr|regexp_substr常用函数 【SQL开发实战技巧】系列十二三问(如何对字符串字母去重后按字母顺序排列字符串如何识别哪些字符串中包含数字如何将分隔数据转换为多值IN列表?) 【SQL开发实战技巧】系列十三讨论一下常用聚集函数通过执行计划看sum()over()对员工工资进行累加 【SQL开发实战技巧】系列十四计算消费后的余额计算银行流水累计和计算各部门工资排名前三位的员工 【SQL开发实战技巧】系列十五查找最值所在行数据信息及快速计算总和百之max/min() keep() over()、fisrt_value、last_value、ratio_to_report 【SQL开发实战技巧】系列十六数据仓库中时间类型操作初级日、月、年、时、分、秒之差及时间间隔计算 【SQL开发实战技巧】系列十七数据仓库中时间类型操作初级确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数 【SQL开发实战技巧】系列十八数据仓库中时间类型操作进阶INTERVAL、EXTRACT以及如何确定一年是否为闰年及周的计算 【SQL开发实战技巧】系列十九数据仓库中时间类型操作进阶如何一个SQL打印当月或一年的日历如何确定某月内第一个和最后—个周内某天的日期 【SQL开发实战技巧】系列二十数据仓库中时间类型操作进阶获取季度开始结束时间以及如何统计非连续性时间的数据 【SQL开发实战技巧】系列二十一数据仓库中时间类型操作进阶识别重叠的日期范围按指定10分钟时间间隔汇总数据 【SQL开发实战技巧】系列二十二数仓报表场景☞ 从分析函数效率一定快吗聊一聊结果集分页和隔行抽样实现方式 【SQL开发实战技巧】系列二十三数仓报表场景☞ 如何对数据排列组合去重以及通过如何找到包含最大值和最小值的记录这个问题再次用执行计划给你证明分析函数性能不一定高 【SQL开发实战技巧】系列二十四数仓报表场景☞通过案例执行计划详解”行转列”,”列转行”是如何实现的 【SQL开发实战技巧】系列二十五数仓报表场景☞结果集中的重复数据只显示一次以及计算部门薪资差异高效的写法以及如何对数据进行快速分组 【SQL开发实战技巧】系列二十六数仓报表场景☞聊聊ROLLUP、UNION ALL是如何分别做分组合计的以及如何识别哪些行是做汇总的结果行 【SQL开发实战技巧】系列二十七数仓报表场景☞通过对移动范围进行聚集来详解分析函数开窗原理以及如何一个SQL打印九九乘法表 【SQL开发实战技巧】系列二十八数仓报表场景☞人员分布问题以及不同组(分区)同时聚集如何实现 【SQL开发实战技巧】系列二十九数仓报表场景☞简单的树形(分层)查询以及如何确定根节点、分支节点和叶子节点 【SQL开发实战技巧】系列三十数仓报表场景☞树形(分层)查询如何排序以及如何在树形查询中正确的使用where条件 【SQL开发实战技巧】系列三十一数仓报表场景☞分层查询如何只查询树形结构某一个分支如何剪掉一个分支 【SQL开发实战技巧】系列三十二数仓报表场景☞对表中某个字段内的值去重 【SQL开发实战技巧】系列三十三数仓报表场景☞从不固定位置提取字符串的元素以及搜索满足字母在前数字在后等条件的数据 【SQL开发实战技巧】系列三十四数仓报表场景☞如何对数据分级并行转为列 【SQL开发实战技巧】系列三十五数仓报表场景☞根据条件返回不同列的数据以及Left /Full Join注意事项 文章目录系列文章目录前言一、从构建基础数据的重要性来看Left /Full Join注意事项二、根据传入条件返回不同列中的数据总结前言
本篇文章讲解的主要内容是根据传入条件返回不同列中的数据根据界面中选中的不同参数。比如,当只在界面中选中山东省级条件时,显示其下的市级单位,而当选中济宁市市级条件时,要显示其下的镇级单位。从构建基础数据的重要性来看Left /Full Join注意事项 【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作毕竟SQL开发在数据分析场景非常重要且基础面试也会经常问SQL开发和调优经验相信当我写完这一系列文章也能再有所收获未来面对SQL面试也能游刃有余~。 一、从构建基础数据的重要性来看Left /Full Join注意事项
为了明确构建基础数据的重要性,我们看一下案例
drop table aa purge;
drop table bb purge;
drop table cc purge;
drop table dd purge;CREATE TABLE aa AS
SELECT 1 AS coll FROM dual;CREATE TABLE bb AS
SELECT 1 AS coll FROM dual UNION ALL
SELECT 2 AS coll FROM dual;CREATE TABLE cc AS
SELECT 3 AS coll FROM dual UNION ALL
SELECT 4 AS coll FROM dual;CREATE TABLE dd AS
SELECT 1 AS coll FROM dual UNION ALL
SELECT 2 AS co11 FROM dual;select *from aafull join bbon (aa.coll bb.coll)full join ccon (aa.coll cc.coll)full join ddon (aa.coll dd.coll);COLL COLL COLL COLL
---------- ---------- ---------- ----------3 4 2 1 1 12SQL 这个例子的本义是想显示四条数据,但因没有构建基础数据,只是简单地做了FULL JOIN,使结果出现了意想不到的数据。 这里因数据简单还是显示了结果,如果这个语句关联的表更多,数据量更大的话,最后会直接报错退出。 对于这种情况,我们增加一张基础表,并且改为LFET JOlN即可
create table zero as
select *from aa
union
select * from bb
union
select * from cc
union
select * from dd;
SQL select aa.coll,bb.coll,cc.coll,dd.coll2 from zero3 left join aa on(aa.collzero.coll)4 left join bb on(bb.collzero.coll)5 left join cc on(cc.collzero.coll)6 left join dd on(dd.collzero.coll);COLL COLL COLL COLL
---------- ---------- ---------- ----------1 1 12 24 3 从前面的文章可知,使用left join时返回左表中的所有数据,右表只返回相匹配的数据。所以通过建立基础表zero,并改为left join后,数据正常。
二、根据传入条件返回不同列中的数据
有下面测试数据环境
create table tests as
select 山东省 as 省,济宁市 as 市,城前镇as 镇 from dual union all
select 山东省 as 省,济宁市 as 市,张庄镇as 镇 from dual union all
select 山东省 as 省,济南市 as 市,高新区as 镇 from dual union all
select 山东省 as 省,济南市 as 市,历下区as 镇 from dual;
SQL select * from tests;省 市 镇
------ ------ ------
山东省 济宁市 城前镇
山东省 济宁市 张庄镇
山东省 济南市 高新区
山东省 济南市 历下区现在有个需求根据界面中选中的不同参数。比如,当只在界面中选中山东省级条件时,显示其下的市级单位,而当选中济宁市市级条件时,要显示其下的镇级单位。 好了这个需求我们怎么做呢 一般在前面的界面中,市级与区级在不同的下拉框中,相应返回的也是不同的变量。根据这个特点可以用CASE WHEN来对传入参数进行判断
SQL select * from tests;省 市 镇
------ ------ ------
山东省 济宁市 城前镇
山东省 济宁市 张庄镇
山东省 济南市 高新区
山东省 济南市 历下区SQL var v_shi varchar2(20);
SQL var v_sheng varchar2(20);
SQL exec :v_sheng:山东省;PL/SQL procedure successfully completedv_sheng
---------
山东省SQL
SQL select distinct case when :v_sheng is not null then 市 end from tests where 省:v_sheng;CASEWHEN:V_SHENGISNOTNULLTHEN市END
---------------------------------
济南市
济宁市
v_sheng
---------
山东省SQL exec :v_shi:济南市;PL/SQL procedure successfully completedv_shi
---------
济南市SQL select distinct case when :v_shi is not null then 镇 end from tests where 市:v_shi;CASEWHEN:V_SHIISNOTNULLTHEN镇END
-------------------------------
高新区
历下区
v_shi
---------
济南市SQL 总结
本篇文章讲解的主要内容是根据传入条件返回不同列中的数据根据界面中选中的不同参数。比如,当只在界面中选中山东省级条件时,显示其下的市级单位,而当选中济宁市市级条件时,要显示其下的镇级单位。从构建基础数据的重要性来看Left /Full Join注意事项