首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL | CASE WHEN 实战 -- 财报

知识储备 年月销量数据 sales SQL 编辑器(笔者 dbForge Studio) SQL 基本知识(SELECT, GROUP BY, AS, 聚合函数SUM) 业务背景 财务报表,将源数据以更简洁明了的形式呈现给同事...年份分组,对每一年的各月份的零散销量进行汇总统计,行成列,打横输出,列名刚好对应月份,十分简洁明了。...END 结尾,格式也建议稍微注意一下,毕竟一大块(所以建议只记搜索表达式) SELECT * -- 简单 CASE , CASE new_table.total_amount -- 只能针对一个条件进行...刚才提到的注意顺序问题,即聚合函数 SUM() 需要包裹在最外面,若我们对 THEN 后面的 amount 使用,即 SUM(amount) ,则无法得到我们想要的结果(等下展示) 同理,应用到每一个月中...(考察业务背景和知识面) 后记 SQL 中 CASE WHEN 的作用远不止于此,还有非常多的骚操作,熟练掌握可大大提高 SQL 取数的工作效率,加油

1K10
您找到你想要的搜索结果了吗?
是的
没有找到

excel数据——一维与二维之间的转化!

今天跟大家分享excel数据——一维与二维之间的转化!...▽ 我们在做数据搜集整理的时候 通常会遇到要将原始数据做处理 如下图案例所示 这是一张典型的一维 纵向的列代表某一个属性 横向的行代表某一条完整的记录 这也是我们接触最多的原始数据 可是有时候为了分析的方便或者作图的需要...本案例数据较少情况还没有那么严重 可是如果数据有几万条、几十万条呢 傻眼了吧,手动得累死 今天要交给大家的是数据 ●●●●● 逐步如下: ►首先选中要的源数据区域并复制 鼠标停留在一个空白单元格区域...然后右键选择黏贴——选择性粘贴—— 红色标注的图标就代表 点击之后就可以完成 或者复制并选择空白单元格之后 直接按Ctrl+Alt+V 在弹出菜单中最低端勾选复选框 确定之后就可以完成...第二步选择一个空白单元格 第三步点击底部Unpivot table 生成了标准的一维 ●●●●● 我为什么要推荐这个插件呢 大家仔细对比一下用选择性粘贴功能 和用XL tools功能在转化效果上的异同

4.6K50

改写的力量--SQL函数关联优化案例一则

在对某客户一经营分析系统做优化的时候,通过检查超长时间SQL发现了它,这是一个执行时间与数据处理量不相匹配的SQLsql monitor显示如下: 查看sql,发现在返回列使用了一个函数,SQL代码简化如下...a.other_area,null,900,nvl(c.bas1_id,900)) OTHER_AREA_CODE 2、将cmdss.T_STD1_0007剔重(row_number()函数)后作为c与...a做外关联: (select * from (SELECT bas1_id,bas2_id,row_number() over (partition by bas2_id order by rowid...) as rn FROM cmdss.T_STD1_0007 where rule_id='1') where rn=1) c , a.other_area=c.bas2_id(+) 改写后的SQL...总结: SQL代码中,应尽可能使用关联而不是使用自定义的一些包含select的一些函数。这个案例的性能对比充分的证明了这一点。

25810

SQL Server分区(五):添加一个分区

今天我们在讲一下添加一个分区。 正文 所谓天下大事,分久必合,合久必分,对于分区而言也一样。前面我们介绍过如何删除(合并)分区中的一个分区,下面我们介绍一下如何为分区添加一个分区。...为分区添加一个分区,这种情况是时常会发生的。比如,最初在数据库设计时,只预计了存放3年的数据,可是到了第4天怎么办?这样的话,我们就可以为分区添加一个分区,让它把新的数据放在新的分区里。...再比如,最初设计时,一个分区用于存放一年的数据,结果在使用的时候才发现,一年的数据太多,想将一个分区中的数据分为两个分区来存放。 遇到这种情况,就必须要为分区添加一个分区了。...是不是要先为分区方案添加一个文件组? 这种想法是没有错的,想要为分区添加一个分区,可以通过以下两个步骤来实现: 1、为分区方案指定一个可以使用的文件组。...查看方法是:在SQL Server Management Studio中,选择数据库-->存储-->分区方案,右击分区方案名,在弹出的菜单中选择“编写分区方案脚本为”-->CREATE到-->新查询编辑器窗口

1.1K20

SQL Server分区(四):删除(合并)一个分区

今天我们在讲一下删除合并一个分区。 正文 在前面我们介绍过如何创建和使用一个分区,并举了一个例子,将不同年份的数据放在不同的物理分区表里。...第4个小:2013-1-1(包含2013-1-1)之后的数据。 由于上面的需求更改了数据分区的条件,因此,我们必须要修改分区函数,因为分区函数的作用就是要来告诉SQL Server怎么存放数据的。...只要分区函数修改了,SQL Server会自动将数据重新分配,按照新的分区函数指定的方式来存储数据。...先假设我们还没有创建过分区,要满足上面的条件,我们必须要写出如下代码的创建分区函数的SQL语句 CREATE PARTITION FUNCTION partfunSale (datetime)...事实上,在修改分区函数之后,SQL Server也会自动修改分区方案,将处于两个物理分区中的数据放在同一个物理分区里了。可以通过查看分区方案的方式来查看数据具体的存放位置。

2.3K20

如何实现一个跨库连SQL生成器?

需求分析 在需求分析阶段, 我们明确了自动生成SQL模块所需要考虑的需求点, 主要包含如下几点: 需要支持多个事实(流)、多个维度,其中一个事实是主表,其他的均为辅助。...这种场景还有一个类似的场景:如果AB连接完成后B发生了更新,如何让B的更新体现在宽中? 为了解决这种问题,我们增加了一个“反向索引”。...首先有一个全局的PipeLineContainer管理多个pipeLine和pipeline context, 每个pipeline可独立执行一个任务, 比如pipeline1执行同步生成sql任务。...我们要解决的问题是, 多个数据源同步数据进来之后, 按一定的优先级关联, 最终得到一个大宽并需要自动发布。...抽象到数据结构层面就是: 每个同步进来的数据源对应一个叶子节点 节点之间有关联关系,关联关系有多类并有执行优先级 所有节点和关联关系组成一棵树 最终得到一个根节点(大宽)并发布 算法思路 下面说明下解决该问题的算法思路

1.4K30

探究Presto SQL引擎(4)-统计计数

系列文章:探究Presto SQL引擎(1)-巧用Antlr探究Presto SQL引擎(2)-浅析Join探究Presto SQL引擎(3)-代码生成一、背景学习Hadoop时接触的第一个样例就是word...对于Presto这种分布式SQL引擎,计数的实现原理值得深入研究,特别是基数统计。关于普通计数和基数计数,最典型的例子莫过于PV/UV。...例如:age=30的记录id分别为{1,2,6},那么在向量1,2,6位置为1,其他为0。得到110001。...对于一个待进行基数统计的集合(例如一个中符合条件的字段值),为了降低估计的错误率,我们分成m组。...三、分布式计数核心流程对于Hadoop中的入门案例wordcount,可以发现如果用Presto SQL表达如下(以tpch数据集customername字段为例):select w, count(1

1.1K20

干货 | 携程数据血缘构建及应用

缺点:重放SQL的时候可能元数据发生改变,比如临时可能被Drop,没有临时自定义函数UDF,或者SQL解析失败。 方案二:运行时分析SQL并收集。...四、第一个版本-级别血缘关系 4.1 处理流程 针对Hive引擎开发了一个Hook,实现ExecuteWithHookContext接口,从HookContext可以获得执行计划,输入,输出等丰富信息...在17年引入Spark2后,大部分Hive作业迁移到Spark引擎上,这时候针对Spark SQL CLI快速开发一个类似Hive Hook机制,收集级别的血缘关系。...5.1 传输工具DataX 阿里开源的Druid是一个 JDBC 组件库,包含数据库连接池、SQL Parser 等组件。...在DropTableCommand增加了一个标志位,真正在有执行Drop操作的话再为True,保证收集的血缘数据是对的。

4.8K20
领券