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

SQL | CASE WHEN 实战 -- 转置财报

知识储备 年月销量数据表 sales SQL 编辑器(笔者 dbForge Studio) SQL 基本知识(SELECT, GROUP BY, AS, 聚合函数SUM) 业务背景 转置财务报表,将源数据以更简洁明了的形式呈现给同事...可以直接注释掉一行而不影响其他行 2. 可在一行末尾添加注释而不影响其他行 3....注意叙述顺序:取出对应年份的一月份的销量,再求和。是先取出销量再求和。...; 问题探究 如果将聚合函数 SUM() 用在了 THEN 后,则会出现如下事与愿违的效果 CASE WHEN month_ = 1 THEN SUM(amount) END AS Jan -- 仅对一月份进行尝试...(考察业务背景和知识面) 后记 SQL 中 CASE WHEN 的作用远不止于此,还有非常多的骚操作,熟练掌握可大大提高 SQL 取数的工作效率,加油

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

SQL 聚合查询

SUM:求和。 AVG:求平均值。 MAX:求最大值。 MIN:求最小值。...SQL 存在一种很特殊的值类型 NULL,如果 COUNT 指定了具体列,则统计时会跳过此列值为 NULL 的行,而 COUNT(*) 由于未指定具体列,所以就算包含了 NULL,甚至某一行所有列都为...当然任何聚合函数都可以跟随查询条件 WHERE,比如: SELECT COUNT(*) FROM test WHERE is_gray = 1 SUM SUM 求和所有项,因此必须作用于数值字段,而不能用于字符串...id,而第二条查询的 id 是无意义的,因为不知道归属在哪一行,所以只返回了第一条数据的 id。...总结 聚合函数 + 分组可以实现大部分简单 SQL 需求,在写 SQL 表达式时,需要思考这样的表达式是如何计算的,比如 MAX(c1), c2 是合理的,而 SUM(c1), c2 这个 c2 就是无意义的

2.4K31

如何SQL 中使用 LEFT、RIGHT、INNER、OUTER、FULL 和 SELF JOIN?

SQL,作为与关系数据库通信的一种方法,允许您在表之间创建关系. 本文介绍如何使用 SQL 来连接表。 SQL JOIN 的类型 左连接、内连接、完全连接、自连接和交叉连接是其他五种主要连接类型。...Country_Code cc ON gt.country_code = cc.fips_code; 查询结果: image.png FULL JOIN 无论是否发现匹配,完全外连接都包含两个表中的每一行...另一方面,最后一行没有标准 ID 和国家/地区代码,因为 Google Ads GeoTargets 数据库没有国家/地区代码 =“ZA”的标准。...考虑如下的员工表: image.png 现在,上面解释的查询将产生如下结果: image.png 结论 这篇文章最重要的收获是 SQL JOIN可以分解为三个步骤: 选择您要使用的表和特征。...我希望通过阅读这篇文章,您将能够通过合并表来提高您的基本 SQL 能力并执行更复杂的分析。 SQL 连接是一个非常重要的主题,不仅对于您的日常工作,而且对于编程工作面试也是如此。

1.9K40

PHP操作mysql数据库

步骤: 1、连接数据库函数 mysqli_connect(主机名,用户名,密码) 返回值是我们一个连接的对象,如何连接失败,报错并且返回false 2、判断错误 mysqli_connect_error...要选择的数据库名) 如果选择成功返回true,否则返回false 4、选择字符集 mysqli_set_charset(连接对象,要选择的字符集) 如果选择成功返回true,否则返回flase 5、发送sql...语句 mysqli_query(连接对象,要发送的sql语句) 成功得到一个结果集对象,失败返回false 6、处理结果 6.1获取条目数 a、mysqli_num_rows(结果集对象) 用来获取查询得到的集录条数...仅对select有效 b、mysqli_affected_rows(连接对象) 前一次MySQL操作的受影响行数,就是影响了几行。...fetch_assoc() mysqli_fetch_assoc() 以关联数组的方式返回一行数据 fetch_array() mysqli_fetch_array() 以混合数组的方式返回一行数据

4.9K20

006从零开始学Python—自定义函数

3.可变参数 上面讲解的必选参数和默认参数都是在己知这个自定义函数需要多少个形参的情况下构建的。如果不确定该给自定义函数传入多少个参数值时,该如何自定义函数呢?...例如,小明的弟弟小亮刚读一年级,老师布置了一些关于两个数的求和运算,针对这个问题我们可以构建如下的自定义函数: 斗两个数的求和 # 两个数的求和def add(a,b): s = sum([a,b...如果只是两个数求和的问题可以很简单地利用自定义函数add 解决,但如果不是两个数之和而是三个数或四个数或五个数之和,也就是说不确定接下来会计算几个数的和,这时再使用上面add函数似乎就不合理了。...好在Python 给自定义函数提供了可变参数,目的就是解决这类问题举例如下: 任意个数的数据求和: # 任意个数的数据求和def adds(*args): print(args) s = sum...写到这里,顺便分享下如何在VBA以及SQL Server数据库中自定义函数,供大家对照学习。

75330

用 Explain 命令分析 MySQL 的 SQL 执行

MySQL 查询过程 如果能搞清楚 MySQL 是如何优化和执行查询的,不仅对优化查询一定会有帮助,还可以通过分析使用到的索引来判断最终的加锁场景。 下图是MySQL执行一个查询的过程。...也可以通过 explain 了解数据库是如何进行优化决策的,并提供一个参考基准,便于用户重构查询和数据库表的 schema、修改数据库配置等,使查询尽可能高效。...system 表示表只有一行记录,相当于系统表。如下图所示,因为 from 的子查询派生的表只有一行数据,所以 primary 的表连接类型为 system。 ?...对于每个来自前边的表的行组合,从该表中读取一行。它是除了 const 类型外最好的连接类型。...这些其实是我们分析加锁场景最为关心的字段,后续文章会具体讲解如何根据这些字段和其他工具一起判断复杂 SQL 到底加了哪些锁。 ref ref 列表示使用其他表的哪个列或者常数来从表中选择行。

1.8K11

SQL的复习与总结

不区分大小写,但是建议SQL关键字使用大写,本文遵守此规则;建议每个SQL写完后跟上“;”,本文遵守此规则。   ...table_name LIMIT x; SELECT column_name FROM table_name LIMIT x OFFSET y;   注:LIMIT表示检索多少行,OFFSET表示从第几行数据开始(第一行数据的下标为...ORDER BY column1_name, column2_name;   注:仅当column1_name一致时才会对column2_name进行排序,如果column1_name都是唯一的相当于仅对...=  >=    <  BETWEEN(AND)  IS NULL   仅对单个值过滤 SELECT column_name FROM table_name WHERE column_name...百分号(%)通配符: SELECT column_name FROM table_name WHERE column_name LIKE 'String%'   注:上面的语句将检索column_name

79820

用 Explain 命令分析 MySQL 的 SQL 执行

MySQL 查询过程 如果能搞清楚 MySQL 是如何优化和执行查询的,不仅对优化查询一定会有帮助,还可以通过分析使用到的索引来判断最终的加锁场景。 下图是MySQL执行一个查询的过程。...也可以通过 explain 了解 数据库是如何进行优化决策的,并提供一个参考基准,便于用户重构查询和数据库表的 schema、修改数据库配置等,使查询尽可能高效。...system 表示表只有一行记录,相当于系统表。如下图所示,因为 from 的子查询派生的表只有一行数据,所以 primary 的表连接类型为 system。...对于每个来自前边的表的行组合,从该表中读取一行。它是除了 const 类型外最好的连接类型。...这些其实是我们分析加锁场景最为关心的字段,后续文章会具体讲解如何根据这些字段和其他工具一起判断复杂 SQL 到底加了哪些锁。 ref ref 列表示使用其他表的哪个列或者常数来从表中选择行。

1.5K00

数据库操作中需要注意的问题

那么如何解决插入乱码问题呢?...会发现这两条sql语句都生效了,但是很多人认为这两条sql语句是有问题的,却能够运行成功。...其实,这是mysql的一个bug,那么,既然这种sql语句有问题,我们怎样才能够让mysql检测出来呢? 我们可以将sql语句这样写。...原理:一行一行地删除数据记录。 所以,truncate在删除所有记录的性能上,是优于delete的。 四、select语句查询时的一些问题 我们先创建一张表,然后初始化数据。...所以这里就需要注意了: select name math from stu; select name,math from stu; 观察上面两个sql语句,你会发现只有一个逗号的差别,但两条语句的效果是完全不一样的

1.1K20

拼多多面试题:如何找出连续出现N次的内容?

球队 3 order by 得分时间) as 排名 4 from 分数表; 查询结果: image.png 上述结果中,我们能用肉眼看出A1连续出现3次,但是如何用...2.找出连续出现3次的值 如果我们将第1列“球员姓名”向上错位1行到第2列,向上错位2行到第3列,那么原本第1列连续的3个值会到同一行中去。例如下图,第1列三个连续A1值,现在到了同一行。...那么,如何SQL实现上述错位两列的效果呢?...运行顺序 完成上面工作,现在就可以使用where子句筛选出出三个值都相同的行,也就是球员姓名 = 姓名1 and 球员姓名 = 姓名2。...《猴子 从零学会SQL》里讲过以下业务场景要用到窗口函数: 1)经典topN问题 2)经典排名问题 3)在每个组里比较的问题 4)累计求和问题 5)移动平均问题 6)连续出现N次的问题 3.考查窗口函数

1.2K00

【Java 进阶篇】JDBC查询操作详解

本篇博客将详细介绍如何使用JDBC进行查询操作,包括连接数据库、创建查询语句、执行查询、处理结果集等方面的内容。无论你是初学者还是有一定经验的开发者,都可以从中获得有价值的信息。...然后,我们通过遍历ResultSet来访问查询结果的每一行。...; int age = resultSet.getInt("age"); } // 关闭结果集 resultSet.close(); 遍历结果集时,我们使用next()方法来移动到结果集的下一行...总结 本篇博客介绍了如何使用JDBC进行查询操作的基本步骤,包括连接数据库、创建查询语句、执行查询操作和处理结果集。希望这些示例能够帮助你更好地理解和使用JDBC进行数据库查询操作。...在实际开发中,你可以根据自己的需求和数据库类型来编写相应代码,来完成自己的需求。

40820
领券