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

玩爆你的数据报表之存储过程编写(上)

存储过程的编写最重要的是思路清晰,能知道自己想要的结果和写出的SQL能运行出什么样的结果,这需要基本功非常扎实,过程中会用到联表查询、更新、临时表、数据聚合、行列转换、简单的函数……等知识。...其中需要传入两个参数:项目ID和年份 下面来理一理整体的思路: 如果只统计一个产品显示以上的数据该如何写呢?你可以先试一下。...,用于计算比例 #TempSaleDtl:通过日期过滤,且加工过后的销售明细,包括增加累积列,以前年度、以后年度、项目合计的记录 #tempSaleDtl2:列转行后的数据集 #tempSaleDtl3...从表#TempSaleDtl 统计当前年度合计列,各产品的所有面积、金额、均价总合计 放入表#TempSaleDtl,注意这里 SUM(SaleAmount)/SUM(SaleArea) 计算销售单价:...玩爆你的数据报表之存储过程编写 上篇先写到这,对于看不懂的建议先建立数据库,然后自己一步步试着理下思路,试着写。 这里留个作业,如何将上面的数据转化为下图中的格式呢? ?

1.7K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库中的having语句_sql的having语句

    where子句后边是指定行所对应的条件,并且不能含有聚集函数,而HAVING后边是指定组所对应的条件,可以含有聚合函数。HAVING语句的存在弥补了WHERE关键字不能与聚集函数联合使用的不足。...如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用 HAVING短语指定筛选条件。...聚合/聚集函数: COUNT(*)统计元组个数 COUNT([ DISTINCTIALL])统计列中值的个数 SUM([ DISTINCT JALLI)计算一列值的总和(此列必须是数值型...: (1)where子句查找符合条件的数据; (2)使用group by 子句对数据进行分组; (3)对每个分组运行聚集函数计算; (4)用having 子句去掉不符合条件的组。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.1K30

    Power BI 矩阵解决【只在总计……】的方法

    如果把指标和排名度量值都放入Power BI矩阵的值,显示如下。如何只在总计显示排名?...可以把排名放入条件格式,但是条件格式不支持数字度量值,所以把排名用SVG包裹下,参考《Power BI 排名与Top可视化总结》,然后施加条件格式时选择应用于合计,就得到了需要的结果。...矩阵有添加趋势图的功能,还是这个案例,点击添加迷你图: 我们得到了下图这样糟糕的效果,总计之外的迷你图是无意义的。 那么如何只在总计添加迷你趋势图?遇事不决还是SVG。...此时,不能将折线迷你图加入条件格式图标了,因为折线图占据的横向空间较大,不适合放在条件格式。 上方的效果核心思路是将数据和折线都图形化。上图每天的数据看上去是数据,其实也是SVG图片。...使用HASONEVALUE函数去判断日期是否具有唯一值,如果具有唯一日期,返回SVG的TEXT标签,标签包裹具体的数据,如果不具有唯一值(也就是说总计列),返回SVG的Path折线标签,列小计的名字改为

    7010

    如何快速分析出城市人口流动数量?

    sum(数量) as 流出总人数 from 各城市人口流动表 where 流出城市="北京"; 查询结果为: 即下面标红色的部分求和: 2、题目要求满足多个并列条件:交通工具是"飞机",流入年份是"...多个条件并列用"and"。...下列字符和字符串是常用的: 格式化日期常用的字符串: 3、SQL常用的日期提取函数: 4、or操作符,筛选结果只要满足其中之一条件就被筛选出来,在与and连用时,优选计算and,and拥有较高的计算次序...,or前后的条件一般需要用括号括起来,否则会优先计算and前后的条件,造成计算错误。...【问题3解题思路】: 计算2018年流入流出长春的总人数 1、解题思路:先把符合条件的"流入"的人数计算出来,并把符合条件的"流出"的人数计算出来,两者合并作为一个整体,然后对整体的结果再求和。

    1K30

    事件统计 | performance_schema全方位介绍

    ,我们可以看到: 每个表都有各自的一个或多个分组列,以确定如何聚合事件信息(所有表都有EVENT_NAME列,列值与setup_instruments表中NAME列值对应),如下:  events_waits_summary_by_account_by_event_name...对于按照帐户、主机、用户聚合的统计表,truncate语句会删除已开端连接的帐户,主机或用户对应的行,并将其他有连接的行的统计列值重置为零(实测跟未按照帐号、主机、用户聚合的统计表一样,只会被重置不会被删除...注意:这些表只针对阶段事件信息进行统计,即包含setup_instruments表中的stage/%开头的采集器,每个阶段事件在每个表中的统计记录行数需要看如何分组(例如:按照用户分组统计的表中,有多少个活跃用户...,我们可以看到,同样与等待事件类似,按照用户、主机、用户+主机、线程等纬度进行分组与统计的列,分组和部分时间统计列与等待事件类似,这里不再赘述,但对于语句统计事件,有针对语句对象的额外的统计列,如下:...,AVG_STATEMENTS_WAIT,MAX_STATEMENTS_WAIT:关于存储程序执行期间调用的嵌套语句的统计信息 prepared_statements_instances表有自己额外的统计列

    1.9K31

    用SQL语句进行数据库查询(简单查询)

    姓名 from SC where Grade is null--null表示为空 1.基于IN字句的数据查询 IN 的用法-- 查询匹配多个字段(也可单个),允许我们在 WHERE 子句中规定多个值。...补充知识: SQL中的通配符: ①:‘%’ 包含零个或多个字符的任意字符串: ②:‘_’(下划线) 任何单个字符: select *from Student where Sname LIke '张...结果2: 用例: 查询全体学生的姓名及其年龄 我们的表中并没有年龄这一属性,但是我们有学生的出生日期,这样我们可以通过计算(当前日期-出生日期)得到年龄. select Sname as 姓名 ,...COUNT()函数允许您对表中符合特定条件的所有行进行计数。 COUNT()函数返回由SELECT语句返回的结果集中的行数。COUNT()函数计算中包含NULL和非NULL值的行,也就是用计算所有行...补充知识: having 作用类似于where,差别是 where:删选符合条件的行, having:删选符合条件的组.

    2.7K20

    事件统计 | performance_schema全方位介绍

    ,我们可以看到: 每个表都有各自的一个或多个分组列,以确定如何聚合事件信息(所有表都有EVENT_NAME列,列值与setup_instruments表中NAME列值对应),如下:  events_waits_summary_by_account_by_event_name...对于按照帐户、主机、用户聚合的统计表,truncate语句会删除已开端连接的帐户,主机或用户对应的行,并将其他有连接的行的统计列值重置为零(实测跟未按照帐号、主机、用户聚合的统计表一样,只会被重置不会被删除...注意:这些表只针对阶段事件信息进行统计,即包含setup_instruments表中的stage/%开头的采集器,每个阶段事件在每个表中的统计记录行数需要看如何分组(例如:按照用户分组统计的表中,有多少个活跃用户...,我们可以看到,同样与等待事件类似,按照用户、主机、用户+主机、线程等纬度进行分组与统计的列,分组和部分时间统计列与等待事件类似,这里不再赘述,但对于语句统计事件,有针对语句对象的额外的统计列,如下:...,AVG_STATEMENTS_WAIT,MAX_STATEMENTS_WAIT:关于存储程序执行期间调用的嵌套语句的统计信息 prepared_statements_instances表有自己额外的统计列

    1.4K10

    统计不同值的7种方法

    标签:Excel技巧 很多时候,我们需要统计列表中的不同值的个数,在Excel中有多种方法实现。 首先,我们来解释什么是不同值和唯一值。...而唯一值意味着值仅出现一次,例如列表{A, B, B, C}中的唯一值是{A, C},唯一值个数是2。 方法1:使用COUNTIFS函数 COUNTIFS函数允许基于一个或多个判断条件来统计值。...如下图1所示的列表,统计列表中的不同值个数,使用公式: =SUM(1/COUNTIFS(B5:B13,B5:B13)) 图1 COUNTIFS函数用于查看列表中每个值出现了多少次。...图10 在“值字段设置”对话框中,选取“计算类型”列表中的“非重复计数”,如下图11所示。 图11 单击“确定”,结果如下图12所示。...图15 方法7:使用VBA 按Alt+F11组合键,打开VBE,插入一个标准模块,输入下面的代码: Function CountDistinctValues(rng As Range) As Integer

    3.4K10

    SQL 查找是否存在,别再 COUNT 了,很耗费时间的

    根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT COUNT(*) 呢?...无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的COUNT 目前多数人的写法 多次REVIEW代码时,发现如现现象: 业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录...普遍的SQL及代码写法如下 ##### SQL写法: SELECT count(*) FROM table WHERE a = 1 AND b = 2 ##### Java写法: int nums =...COUNT()有两个非常不同的作用:它可以统计某个列值的数量,也可以统计行数。在统计列值时要求列值是非空的(不统计NULL)。...只需确定,有和无,而不是,无还是有多少!在有的情况下,直接返回,而不需要继续统计行数! 巧妙的使用 limit 1,获得更高效率,尤其是在某些复杂且不规范的语句中效果更明显!

    5.7K20

    MySQL 系列教程之(七)DQL:从 select 开始丨【绽放吧!数据库】

    在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。...指定两个值之间 IS NULL 空值 组合WHERE子句 MySQL允许给出多个WHERE子句。...计算字段是运行时在SELECT语句内创建的 拼接 Concat vendors表包含供应商名和位置信息。...> > 通过这些例子,可以明白如何根据需要使用SELECT进行试验 函数的使用 与其他大多数计算机语言一样,SQL支持利用函数来处理数据。...或者返回只提供单项产品的供应商所提供的产品,或返回提供10个以上产品的供应商怎么办? 此时就需要使用分组了,分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算。

    3.6K43

    1.24 当前行减上一行,累计还原为当期

    有一张系统输出的事实表,是按照门店和日期时间(连续的以1小时为间隔)生成的当天的累计数量,现需要在PowerQuery中还原成每个日期时间对应的当期的数量。...解决方案优先考虑在上游系统中对数据源进行调整;在PowerQuery中,按门店、日期时间排序,然后按门店取出累计列当前行的上一行数据,然后用累计数字减去上一行累计数字就得到了当期数字。...当然,通过DAX也能解决这个问题,但不建议这样做,因为数据清洗最好在数据加载前PowerQuery中完成,以减少冗余数据和对运行内存的占用。...STEP 4 如果PowerQuery生成的步骤名称是中文,在STEP3生成的查询步骤上面点击鼠标右键重命名为展开表(名称不带中文引号即可,有引号不方便后面引用该步骤)。...]else [累计数量])STEP 6 删除不需要的列,去掉累计列,保留数量列,修改数据类型,如下:

    5300

    SQL优化指南

    COUNT()是一个特殊的函数,有两种不同的作用,它可以统计某个列值的数量,也可以统计行数。   在统计列值的时候要求列值是非空的,也就是不统计null。   ...不过它是有前提条件的,条件是没有任何where条件的count(*)才非常快,因为此时无须实际的去计算表的行数,mysql可以利用存储引擎的特性直接获得这个值,如果mysql知道某列不可能有null值,...当统计带有where条件的查询,那么mysql的count()和其他存储引擎就没有什么不同了。...filesort的优化   了解了MySQL排序的方式,优化目标就清晰了:尽量减少额外的排序,通过索引直接返回有序数据。where条件和order by使用相同的索引。   ...当然 这不是绝对的,比如某些非常简单的子查询就比关联查询效率高,事实效果如何还要看执行计划。   只能说大部分的子查询都可以优化成Join关联查询。

    80020

    SQL优化指南

    ) 统计列与统计行?...COUNT( )是一个特殊的函数,有两种不同的作用,它可以统计某个列值的数量,也可以统计行数。 在统计列值的时候要求列值是非空的,也就是不统计null。...不过它是有前提条件的,条件是没有任何where条件的count(*)才非常快,因为此时无须实际的去计算表的行数,mysql可以利用存储引擎的特性直接获得这个值,如果mysql知道某列不可能有null值,...当统计带有where条件的查询,那么mysql的count( )和其他存储引擎就没有什么不同了。...filesort的优化 了解了MySQL排序的方式,优化目标就清晰了:尽量减少额外的排序,通过索引直接返回有序数据。where条件和order by使用相同的索引。

    85320

    滴滴面试题:打车业务问题如何分析?

    (文末有模拟数据下载) 【解题思路】 为了方便数据处理,首先将这些表中所有的日期数据转化为日期格式 ‘年-月-日’ 的形式。需要使用 date_fromat 函数。...where year(首次完成订单时间)=year(日期) and month(首次完成订单时间)=month(日期)  加入“新司机”条件后的sql如下: select count(司机id) as...as 年月; 子问题4,城市条件:北京市 利用where添加城市条件,城市id等于北京市的id。...sql语句解析如下 查询结果如下 【本题考点】 1.这次试题重点要考察的是表的联结。当题目中涉及到多个表之间的关系时,我们要找到多个表之间是通过什么条件关联的,然后进行多表关联。...2.考查如何将复杂问题拆解为简单问题的能力,可以使用逻辑树分析方法。 3.如何下载案例数据?

    1.6K20

    1000+倍!超强Python『向量化』数据处理提速攻略

    当然有可能 ,关键在于你如何操作! 如果在数据上使用for循环,则完成所需的时间将与数据的大小成比例。但是还有另一种方法可以在很短的时间内得到相同的结果,那就是向量化。...代码如下: 4 Multiple conditions 类似这样的多个if/elif/elifs,如何向量化呢?...其中,你的选择可以是标量,也可以是数组。只要它符合你的条件。 这是我们第一次尝试将多个条件从.apply()方法转换为向量化的解决方案。...向量化选项将在0.1秒多一点的时间内返回列,.apply()将花费12.5秒。嵌套的np.where()解决方案工具179ms。 那么嵌套的多个条件,我们可以向量化吗?可以!...你可以使用.map()在向量化方法中执行相同的操作。 3、日期 有时你可能需要做一些日期计算(确保你的列已经转换为datetime对象)。这是一个计算周数的函数。

    6.8K41

    MSSQL之四 简单查询

    【例4-14】:在查询窗口中运行如下命令: select bookname,'书的单价为:',price from book 运行结果如下: Ø 使用WHERE子句给出查询的条件...使用WHERE子句限制查询的范围,通常情况下,必须定义一个或多个条件限制查询选择的数据行。...如果查询条件需要在分组之前被应用,则使用WHERE子句,其限制查询条件比使用HAVING子句更有效,这种技巧减少了要进行分组的行数。...你将如何从查询的输出中消除重复行 3、写出一个抽取EMPLOYEE 表中所有行的查询,其中以“p”字符开始并且包含“A”或“E”作为第二个字符 1、写出一个将计算SalesOrderFetail表中的每个...在SELECT语句中使用逻辑操作符来抽取基于一个或满足条件的记录。逻辑操作符有AND和NOT. 7. 范围操作符基于范围抽取数据。

    8910

    关于Left join,你可能不知道这些......

    4.有is null 或者有 is not null的情况 当条件写在on中: ? 当条件写在where 中: ?...对于这个需求,我们可以使用left join进行自关联,用之前活跃的天作为左表,最终期望计算的天作为右表,计算日期差,并进行左右表分别计数。初步的SQL如下:(数据是自己编的) ?...值得注意的是,关联不上的日期是null值,而null值在参与datediff的计算时,结果会是null。到这里你是不是明白一点了。...由于null值参与计算,导致最终datediff 有null值,并且计数的时候,由于null值存在,最终用日期差作为维度的时候,导致左表和右表的数量是一样的。如下面代码所示: ?...包括关联时结果中的记录数,关联条件写在on和where中的区别,where语句中存在is null的时候如何理解,最后用实例帮助大家进行理解。

    23.7K11

    初学者SQL语句介绍

    例子:     Select * From students 检索students表中的所有记录     3.用 Where 子句说明条件     Where 子句告诉数据库引擎根据所提供的一个或多个条件限定其检索的记录...补充:     使用 And 和 Or 逻辑可以将两个或更多的条件链接到一起以创建更高级的 Where 子句。    ...在一个正式的 Select 查询之后包含一个 Order By 子句,后跟想排序的字段(可以有多个)便可以说明一个排序顺序。    ...用 As 对字段名进行别名化     为什么在查询中对字段命以别名,或重新命名,这样做的原因有两个:     ☆所涉及的表的字段名很长,想使字段在结果集中更易处理一些。    ...☆创建的查询产生了某些计算或合计列,需要对之进行命名。     不管是什么原因对字段命以别名,在 SQL 中都可以容易地使用 As 子句做得。

    1.7K30
    领券