【SQL开发实战技巧】系列(三十五):数仓报表场景☞根据条件返回不同列的数据以及Left /Full Join注意事项
系列文章目录
【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.coll=zero.coll)4 left join bb on(bb.coll=zero.coll)5 left join cc on(cc.coll=zero.coll)6 left join dd on(dd.coll=zero.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注意事项
相关文章:
【SQL开发实战技巧】系列(三十五):数仓报表场景☞根据条件返回不同列的数据以及Left /Full Join注意事项
系列文章目录 【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧…...
springBoot自动配置过程介绍
什么是自动配置 以前整合spring mybatis框架时候,需要加很多的bean, 比如说sqlSessionFactory等等 现在springboot帮我们干了,我们只需要引入对应的starter就可以了。 springBoot可以帮我们配置好了一些bean. 如mysql, mogondb相关操作等等ÿ…...
PostgreSQL最后的救命稻草 — pg_resetwal
pg_resetwal— 重置 PostgreSQL 数据库集群的预写日志和其他控制信息 适用版本:PostgreSQL 12/13/14/15语法 pg_resetwal [ -f | --force ] [ -n | --dry-run ] [option...] [ -D | --pgdata ]datadir描述pg_resetwal清除预写日志 WAL,并可选地重置pg_c…...
彻底关闭Windows更新
一、关闭Windows Update服务 1、按“Windows R”键,打开运行对话框,并输入“services.msc”,然后再单击“确定”。 2、在弹出的服务窗口中,找到“Windows Update”选项并双击打开它。 3、在弹出的“Windows Update的属性”对话框…...
Java正则表达式语法
Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 2在字符串中查询字符或者字符串 3常用正则表达式 4正则表达式语法 1匹配验证-验证Email是否正确 public static void main(String[] args) { // 要验证的字符串 String str "servicexsoftlab.net&q…...
【2023-3-29】JavaScript使用promise顺序调用函数并抛出异常
JavaScript使用promise顺序调用函数并抛出异常 场景 新建或者编辑时,一个页面中存在多个表单,每个表单都有单独进行表单验证。点击提交时,若有一个表单校验失败,则不能提交。 ps:为啥不放在一个表单中? (…...
Python实现GWO智能灰狼优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能…...
从redis到epoll到mmap
redis为什么这么快? 比较容易答出的答案 1)纯粹的内存操作 2)单线程操作,不用考虑线程切换 其他优势 3)I/O 多路复用,使用epoll 4)Reactor 设计模式 I/O 多路复用有三种 select、poll、epoll select:使用数组存储轮询 poll:使用链表轮询 epo…...
STM32CubeMX快速构造工程模板(一)
STM32CubeMX作为一个免费开源的软件,能够可视化配置STM32或其他产品硬件资源,能过快速地构造工程模板,很是方便!!! 目录 STM32CubeMX快速构造工程模板 首先第一步,打开软件-点击按钮-输入型号-双击打开。...
Java Web中的ServletContext对象
目录 ServletContext对象 获取上下文初始化参数的相关方法 创建ServletContext对象 1)通过 GenericServlet 提供的 getServletContext() 方法 2)通过 ServletConfig 提供的 getServletContext() 方法 3)通过 HttpSession 提供的 getServletCo…...
回归预测 | MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测
回归预测 | MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测 目录回归预测 | MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测效果一览基本介绍程序设计参考资料效果一览 基本介绍 MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测 粒子…...
在小公司工作3年,从事软件测试5年了,才发现自己还是处于“初级“水平,是不是该放弃....
毕业前三年,从早到晚,加班到深夜,一年又一年,直至刚入职场的首个黄金三年过年都去了,而职位却仍在原地踏步。尽管感觉自己努力过,但是实际上,自身的能力从没得到过多少提升。 所以在无数个夜晚…...
基于 OpenCV 与 Java 两个语言版本实现获取某一图片特定区域的颜色对比度
本文目录一、什么是对比度二、什么是颜色直方图三、如何通过RGB计算颜色对比度什么是HSV、Lab颜色空间四、OpenCV代码五、Java代码5.1 平滑处理5.2 完整代码一、什么是对比度 对比度是指图像中不同区域之间的明暗差异程度,它是图像质量中的重要指标之一。除了颜色对…...
Book:实战Java高并发程序设计(第二版)
实战Java高并发程序设计(第二版)为什么会有并行计算?并行计算需要回答的问题基本概念并发级别有哪些?Amdahl定律和Gustafson定律Java并发三特性进程和线程线程的生命周期Thread类run()与start()的区别为什么会有并行计算ÿ…...
LeetCode 831. Masking Personal Information【字符串,正则表达式】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
递增三元组
[蓝桥杯 2018 省 B] 递增三元组 题目描述 给定三个整数数组 A[A1,A2,⋯,AN]A [A_1, A_2,\cdots, A_N]A[A1,A2,⋯,AN],B[B1,B2,⋯,BN]B [B_1, B_2,\cdots, B_N]B[B1,B2,⋯,BN],C[C1,C2,⋯,CN]C [C_1, C_2,\cdots,C_N]C[C1,C2,⋯,CN…...
java源码阅读 - TreeSet
往期文章 用最简单的话讲最明白的红黑树java源码阅读 - HashMap数据结构 - 堆与堆排序 文章目录往期文章一、介绍二、类的声明三、成员变量四、构造函数五、常用方法1. NavigableSet接口的实现2. SortedSet接口的实现六、总结一、介绍 在上期文章中,我们从源码层面…...
写毕业论文经验贴
首先说一句不要靠近word,会变得不幸。最好用latex写,不过我当时懒得下载latex了,于是后期改格式花了点时间 写论文之前 事先把所有的论文都查好并且整理好,论文第一、二章写起来就会很快; 把实验做顺溜,实…...
2.7 进程退出、孤儿进程、僵尸进程+2.8 wait函数+2.9 waitpid函数
1.进程退出 子进程退出时:父进程帮助子进程回收内核区的资源 exit.c /*#include <stdlib.h>void exit(int status);#include <unistd.h>void _exit(int status);status参数:是进程退出时的一个状态信息。父进程回收子进程资源的时候可以获取…...
【新2023Q2模拟题JAVA】华为OD机试 - 预订酒店
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:预订酒店 题目 放暑假了,橡…...
推荐算法闲谈:如何在不同业务场景下理解和拆解核心指标
巧解决的是能不能学好,而指标分析解决的是这次改动是否真正创造了业务价值,以及为什么。一个非常常见、但又极易被忽视的事实是:推荐系统并不存在一套放之四海而皆准的核心业务指标。不同产品形态、不同交互方式、不同公司发展阶段࿰…...
C++vector迭代器失效全解析
深入讲解 C vector 的迭代器失效在 C 中,std::vector 是一个动态数组,它支持随机访问和高效的元素操作。迭代器是 C 中用于遍历容器元素的重要工具,类似于指针。但使用 vector 时,某些操作可能导致迭代器失效(iterator…...
MATLAB xyz2stl实战:手把手教你修复GitHub热门工具包的常见报错(含stlWrite函数缺失解决方案)
MATLAB xyz2stl实战:从报错排查到完整工作流搭建 当你从GitHub下载了NWRichmond/xyz2stl工具包,满心期待地运行却看到"未定义函数或变量stlWrite"的红色报错时,这种挫败感我深有体会。作为MATLAB社区中下载量排名前10%的三维数据处…...
SMAPI模组加载器全方位指南:从安装到高效管理星露谷物语模组
SMAPI模组加载器全方位指南:从安装到高效管理星露谷物语模组 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 作为开源工具的SMAPI模组加载器,是星露谷物语玩家扩展游戏体验的…...
GLM-4v-9b效果展示:直播带货截图→话术分析+转化点提炼
GLM-4v-9b效果展示:直播带货截图→话术分析转化点提炼 1. 模型能力概览 GLM-4v-9b是智谱AI在2024年开源的多模态视觉-语言模型,拥有90亿参数。这个模型最大的特点是能够同时理解图片和文字,支持中英文多轮对话,在11201120高分辨…...
OpenClaw API配置失败?3步快速修复,免费额度高效利用
OpenClaw API配置失败?3步快速修复,免费额度高效利用引言 OpenClaw作为新一代数据采集平台,其API凭借高效稳定的特性已成为开发者首选的工具之一。但在实际接入过程中,配置失败问题频发,尤其对免费额度用户造成严重困扰…...
DocRes实战指南:高效统一文档图像修复任务的完整解决方案
DocRes实战指南:高效统一文档图像修复任务的完整解决方案 【免费下载链接】DocRes [CVPR 2024] DocRes: A Generalist Model Toward Unifying Document Image Restoration Tasks 项目地址: https://gitcode.com/gh_mirrors/do/DocRes DocRes是一个革命性的通…...
FPGA新手入门:用Verilog手搓一个交通灯控制器(附完整代码与仿真)
FPGA实战:从零构建智能交通灯控制系统的Verilog全流程指南 引言 第一次接触FPGA开发时,我被硬件描述语言的独特思维方式所吸引。与软件编程不同,Verilog让我们能够直接描述硬件电路的行为。交通灯控制系统作为数字电路设计的经典案例…...
别再死记硬背了!用74HC系列CMOS芯片,手把手带你理解逻辑门电平与噪声容限
74HC系列CMOS芯片实战:从数据手册到面包板的逻辑门电平全解析 当你在深夜调试一块74HC04反相器搭建的振荡电路时,示波器上本该清晰的方波却出现了毛刺和畸变——这种场景对电子爱好者来说再熟悉不过。本文将以74HC系列CMOS芯片为核心,通过五…...
实战AI情感分析:基于快马平台构建电商评论智能洞察系统
最近在做一个电商数据分析项目时,发现人工处理海量商品评论实在太费时费力。于是尝试用AI情感分析技术来提升效率,在InsCode(快马)平台上快速搭建了一个评论智能分析系统。整个过程比想象中简单很多,分享下具体实现思路: 系统架构…...
