首页
学习
活动
专区
圈层
工具
发布

SQL grouping

SQL grouping 解决 OLAP 场景总计与小计问题,其语法分为几类,但要解决的是同一个问题: ROLLUP 与 CUBE 是封装了规则的 GROUPING SETS,而 GROUPING SETS...SELECT '合计' as city, sum(people) FROM test 但两条 select 语句聚合了两次,性能是一个不小的开销,因此 SQL 提供了 GROUPING SETS...GROUPING SETS GROUP BY GROUPING SETS 可以指定任意聚合项,比如我们要同时计算总计与分组合计,就要按照空内容进行 GROUP BY 进行一次 sum,再按照 city...返回结果是: 可以看到,值为 NULL 的行就是我们要的总计,其值是没有任何 GROUP BY 限制算出来的。...SQL CASE 表达式 将其转换为总计、小计字样,就可以得出一张数据分析表了: SELECT CASE WHEN GROUPING(city) = 1 THEN '总计' ELSE city END

93730

干货 ▏什么数据库最适合数据分析师?

Benn Stancil认为数据分析工作不可能一蹴而就,分析师在使用数据库的过程中阻碍他们速度的往往不是宏观上的性能,而是编写查询语句时的细节。...例如,在Redshift中如何获取当前时间,是NOW()、CURDATE()、CURDATE、SYSDATE 还是WHATDAYISIT。...该图显示,经过20次左右的编辑之后,查询长度通常会变为之前的2倍,而在100次编辑之后,长度会变为之前的3倍。那么在修改的过程中,其编辑次数与出错的比率又是什么样子的呢? ?...最底部的Total行是结果总计,从中可以看出MySQL和PostgreSQL始终表现较好;Vertica跳跃最大,几乎是从最底部跳到了中游,打败了SQL Server 和Hive,这也暗示了Vertica...最后,Benn Stancil认为在分析的这8个数据库中,MySQL和PostgreSQL编写SQL最简单,应用也最广泛,但与Vertica和SQL Server相比它们的特性不够丰富,而且速度要慢。

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

    什么数据库最适合数据分析师

    Benn Stancil认为数据分析工作不可能一蹴而就,分析师在使用数据库的过程中阻碍他们速度的往往不是宏观上的性能,而是编写查询语句时的细节。...例如,在Redshift中如何获取当前时间,是NOW()、CURDATE()、CURDATE、SYSDATE 还是WHATDAYISIT。...该图显示,经过20次左右的编辑之后,查询长度通常会变为之前的2倍,而在100次编辑之后,长度会变为之前的3倍。那么在修改的过程中,其编辑次数与出错的比率又是什么样子的呢? ?...最底部的Total行是结果总计,从中可以看出MySQL和PostgreSQL始终表现较好;Vertica跳跃最大,几乎是从最底部跳到了中游,打败了SQL Server 和Hive,这也暗示了Vertica...最后,Benn Stancil认为在分析的这8个数据库中,MySQL和PostgreSQL编写SQL最简单,应用也最广泛,但与Vertica和SQL Server相比它们的特性不够丰富,而且速度要慢。

    1.5K50

    【观点】最适合数据分析师的数据库为什么不是MySQL?!

    Benn Stancil认为数据分析工作不可能一蹴而就,分析师在使用数据库的过程中阻碍他们速度的往往不是宏观上的性能,而是编写查询语句时的细节。...例如,在Redshift中如何获取当前时间,是NOW()、CURDATE()、CURDATE、SYSDATE 还是WHATDAYISIT。...该图显示,经过20次左右的编辑之后,查询长度通常会变为之前的2倍,而在100次编辑之后,长度会变为之前的3倍。那么在修改的过程中,其编辑次数与出错的比率又是什么样子的呢? ?...最底部的Total行是结果总计,从中可以看出MySQL和PostgreSQL始终表现较好;Vertica跳跃最大,几乎是从最底部跳到了中游,打败了SQL Server 和Hive,这也暗示了Vertica...最后,Benn Stancil认为在分析的这8个数据库中,MySQL和PostgreSQL编写SQL最简单,应用也最广泛,但与Vertica和SQL Server相比它们的特性不够丰富,而且速度要慢。

    3.3K50

    09-10章 汇总分组数据第9章

    这种类型的检索例子有: 确定表中行数(或者满足某个条件或包含某个特定值的行数); 获得表中某些行的和; 找出表列(或所有行或某些特定的行)的最大值、最小值、平均值。...SQL 的聚集函数在各种主要 SQL 实现中得到一致的支持。 聚集函数(aggregate function)对某些行运行的函数,计算并返回一个值。...在用于文本数据时,MAX()返回按该列排序后的最后一行。MAX()函数忽略列值为 NULL 的行。...SUM()函数 SUM()用来返回指定列值的和(总计) OrderItems 包含订单中实际的物品,每个物品有相应的数量。...提示:在多个列上进行计算 利用标准的算术操作符,所有聚集函数都可用来执行多个列上的计算。SUM()函数忽略列值为 NULL 的行。

    2.2K10

    【学习】什么数据库最适合数据分析师

    Benn Stancil认为数据分析工作不可能一蹴而就,分析师在使用数据库的过程中阻碍他们速度的往往不是宏观上的性能,而是编写查询语句时的细节。...例如,在Redshift中如何获取当前时间,是NOW()、CURDATE()、CURDATE、SYSDATE 还是WHATDAYISIT。...该图显示,经过20次左右的编辑之后,查询长度通常会变为之前的2倍,而在100次编辑之后,长度会变为之前的3倍。那么在修改的过程中,其编辑次数与出错的比率又是什么样子的呢? ?...最底部的Total行是结果总计,从中可以看出MySQL和PostgreSQL始终表现较好;Vertica跳跃最大,几乎是从最底部跳到了中游,打败了SQL Server 和Hive,这也暗示了Vertica...最后,Benn Stancil认为在分析的这8个数据库中,MySQL和PostgreSQL编写SQL最简单,应用也最广泛,但与Vertica和SQL Server相比它们的特性不够丰富,而且速度要慢。

    1.3K40

    一个分组查询引发的思考

    一个分组查询引发的思考 我们在看项目代码或者SQL语句时, 往往会看到很多非常复杂的业务或者SQL 那么问题来了. 复杂SQL是如何写成的?...如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表, HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们...@@sql_mode -- d 利用 union all 进行组合查询, 通过组合查询将总计信息拼在原来的列下(图4) -- 虽然这样写不太规范(在时间里面返回了一个总计的字段, 但是满足了一张表返回所有分组信息和总计结果...动态查询列信息核心逻辑: 在原来的基础上, 首先新增一个获取所有业务列的接口, 然后在当前查询Dao接口传入这个list. mapper.xml 中 通过使用 mybaties的 ...就个人经历而言, 复杂的SQL语句或者业务, 不是一下子就写成的, 而是随着业务的复杂之后, 慢慢的优化而成的. 我们不要过于的惧怕这些复杂的代码, 应该在战略上蔑视它, 在战术上重视它.

    1.2K20

    【DB笔试面试460】在Oracle中,有哪些常用的分析函数?

    题目部分 在Oracle中,有哪些常用的分析函数? 答案部分 分析函数是Oracle从8.1.6开始引入的一个新的概念,为分析数据提供了一种简单高效的处理方式。...在分析函数出现以前,实现相同的功能必须使用自联查询、子查询或者内联视图,甚至需要复杂的存储过程来实现。有了分析函数后,只要一条简单的SQL语句就可以实现了,而且在执行效率方面也有相当大的提高。...Oracle的分析函数主要用于报表开发和数据仓库。分析函数的功能强大,可以用于SQL语句的优化,在某些情况下,能达到事半功倍的效果。...,除了ORDER BY子句的运算外,分析函数在SQL语句中将会最后执行。...N行的数据和后N行的值。

    1.1K20

    主流云数仓性能对比分析

    Amazon Redshift:是市场上第一个原生云数仓服务,MPP、列存、按列压缩、无索引、动态扩展,SQL语法兼容PostgreSQL,支持存储与计算分离,按小时计费,也可以通过暂停来停止计费。...存储计算分离,列存、按小时计费、可通过暂停与恢复来节省成本,SQL兼容SQL Server(可能底层就是SQL Server)。...测试场景与数据规模 本次测试场景选取的是30TB的TPC-H,比较有趣的是在2019年的benchmark中GigaOM选取的是30TB的TPC-DS。...最佳性能SQL的数量:同样,还是Redshift在最多场景性能表现最好,Synapse是第二,但差距已经不大了。而Snowflake和BigQuery在22个场景中没有执行时长最短的。...Snowflake和BigQuery在市场上的宣传一直都是强调其易用性和易管理性(无需DBA),这方面在本次测试中没有涉及。

    4.7K10

    【数据库设计和SQL基础语法】--查询数据--分组查询

    这样就能够以更清晰的方式了解不同部门的情况。 二、GROUP BY 子句 2.1 GROUP BY 的基本语法 在 SQL 中,GROUP BY 语句用于对结果集进行分组。...每个分组集合都由一个或多个列组成,代表一个要进行聚合的分组。空括号 () 表示全局总计。...()(空括号): 表示全局总计。 这样,查询结果将包含按照产品ID和区域、按照产品ID、按照区域以及全局总计的销售数量。你可以在同一查询中获得这些不同层次的汇总信息。...需要注意的是,ROLLUP 生成的总计行会有 NULL 值,表示在该列上的总计。 6.2 CUBE 的使用 CUBE 是 SQL 中用于进行多维度聚合的操作符之一。...八、总结 分组查询是SQL中重要的功能,通过GROUP BY子句将数据按指定列分组,结合聚合函数计算统计信息。ROLLUP和CUBE提供了多层次聚合的方式。

    2.8K10

    以卖香蕉为例,从4个方面了解SQL的数据汇总

    许多电脑使用Excel在面对上千行数据时已力不从心,而R较难部署在集群上运行,人眼显然不可能直接从大量数据中总结出规律。如何才能快速理解你的数据集?SQL可以帮助你!...得到的结果如下: ? 仅通过一次命令请求,我们就可以在非常大的数据集上计算出这些重要的汇总结果。如果再加上where或join命令,我们还可以高效地对数据进行切分。...因此我们往往需要知道数据的25%、50%、75%分位数是多少。 许多数据库已经内建了分位数函数(包括Postgres 9.4、Redshift、SQL Server)。...在MySQL中我们可以使用局部变量来跟踪订单,在Postgres中,我们可以使用row_number函数: ? 计算结果如下: ? 03 直方图 直方图是大致了解数据分布的好方法。...得到的结果如下: ? 我们可能也关心诸如协方差、方差这类统计指标。大多数SQL实现已经内建了这些统计函数,比如在Postgres或Redshift中我们可以使用以下命令: ?

    1.5K30

    第一篇 - 常规过滤及分组汇总:SPL轻量级文件存储提速查询实践

    我们以订单表为例实现 esProc SPL 数据外置,提速常规过滤及分组汇总计算。我们使用 SPL 的 ETL 工具来生成脚本,实现数据的转储。...例 1.1,按雇员分组统计运货费的 SQL 是这样:select employee_id, count(*) as order_count, sum(shipping_fee) as...注意,游标只取出需要的字段,可以减少生成的对象,并减少内存占用,提高性能。A4 中的 select 函数相当于 SQL 中的 WHERE 子句,用于过滤。...A5 则对过滤后的结果做分组,语法形式和 SQL 不同,但仔细看会发现涉及的要素都是一样的:分号前的部分是分组键,相当于 SQL 的 GROUP BY 部分,分号后是聚合值,相当于 SQL 中 SELECT...SPL 的分组会缺省将分组键和聚合值拼成结果集,不像 SQL 那样要在 SELECT 中把分组键再写一遍。SPL 的执行时间是 2.2 秒。BTX 是行式存储,还不能最大程度发挥 SPL 的性能。

    14610

    第17章_触发器

    在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信息 和 库存信息 分别存放在 2 个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时在库存表中添加一条库存记录...触发器执行的语句块 :可以是单条 SQL 语句,也可以是由 BEGIN…END 结构组成的复合语句块。...这个时候,在进货单头表中的总计数量和总计金额就必须重新计算,否则,进货单头表中的总计数量和总计金额就不等于进货单明细表中数量合计和金额合计了,这就是数据不一致。...为了解决这个问题,我们就可以使用触发器,规定每当进货单明细表有数据插入、修改和删除的操作时,自动触发 2 步操作: 1)重新计算进货单明细表中的数量合计和金额合计; 2)用第一步中计算出来的值更新进货单头表中的合计数量与合计金额...但是,人为操作很容易犯错误,比如说在录入数量的时候,把条形码扫进去了;录入金额的时候,看串了行,录入的价格远超售价,导致账面上的巨亏…… 这些都可以通过触发器,在实际插入或者更新操作之前,对相应的数据进行检查

    53820

    MySQL数据库,从入门到精通:第十七篇——MySQL 触发器的使用方法及注意事项

    触发器执行的语句块 :可以是单条SQL语句,也可以是由BEGIN…END结构组成的复合语句块。...这个时候,在进货单头表中的总计数量和总计金额就必须重新计算,否则,进货单头表中的总计数量和总计金额就不等于进货单明细表中数量合计和金额合计了,这就是数据不一致。...为了解决这个问题,我们就可以使用触发器,规定每当进货单明细表有数据插入、修改和删除的操作时,自动触发 2 步操作: 1)重新计算进货单明细表中的数量合计和金额合计; 2)用第一步中计算出来的值更新进货单头表中的合计数量与合计金额...这样一来,进货单头表中的合计数量与合计金额的值,就始终与进货单明细表中计算出来的合计数量与合计金额的值相同,数据就是一致的,不会互相矛盾。 2、触发器可以帮助我们记录操作日志。...但是,人为操作很容易犯错误,比如说在录入数量的时候,把条形码扫进去了;录入金额的时候,看串了行,录入的价格远超售价,导致账面上的巨亏…… 这些都可以通过触发器,在实际插入或者更新操作之前,对相应的数据进行检查

    1.4K11

    「数据仓库技术」怎么选择现代数据仓库

    它允许动态地重新转换数据,而不需要重新摄取存储在仓库中的数据。 在这篇文章中,我们将深入探讨在选择数据仓库时需要考虑的因素。...您可以通过发出SQL命令开始使用它。 可伸缩性 当您开始使用数据库时,您希望它具有足够的可伸缩性来支持您的进一步发展。广义上说,数据库可伸缩性可以通过两种方式实现,水平的或垂直的。...在一次查询中同时处理大约100TB的数据之前,Redshift的规模非常大。Redshift集群的计算能力将始终依赖于集群中的节点数,这与其他一些数据仓库选项不同。...当数据量在1TB到100TB之间时,使用现代数据仓库,如Redshift、BigQuery或Snowflake。...也可以考虑使用Hadoop和Hive、Spark SQL或Impala作为解决方案,如果你有相关的专业知识,你可以分配专门的人力资源来支持它。

    6.3K31

    矩表 - 现代数据分析中必不可少的报表工具

    矩表由矩阵(Matrix)控件演化而来,矩阵可将存储的原始Detail 数据,通过【行分组】(即垂直显示字段值)和【列分组】(即水平显示字段值),将数据二维的展示出来,然后计算每一行或列的合计;也可以将字段值作为行号或列标...,在每个行列交汇处计算出各自的数量,然后计算小计和总计。...定制化的合计功能 在大数据分析过程中,对于数据分析,再也不是简单的求和,最大值,最小值,平均值这些简单的合计功能了,我们需要根据业务规定,对于满足条件的数据进行统计,求占比,同期占比等,矩表支持定制化的合计功能...,不仅支持通用的合计公式,还可以根据自身需求定制表达式或编写函数。...实例 - 使用矩表创建【产品销售数据分析表】 在设计器中添加 矩表 将订购月指定到【行分组】单元格中,将【类别名称】指定到列分组单元格中,在最下方单元格中指定合计方法: =Sum(Sum(Fields

    2.1K10

    MY SQL存储过程、游标、触发器--Java学习网

    MySQL5 中添加了存储过程的支持。 大多数SQL语句都是针对一个或多个表的单条语句。并非所有的操作都怎么简单。...都与mysql语句匹配的行(0行或多行),使用简单的SELECT语句,没有办法得到第一行、下一行或前10行,也不存在每次行地处理所有行的简单方法(相对于成批处理他们) 有时,需要在检索出来的行中前进或后退一行或多行...这个例子作用是文本对每个插入的行显示一次product added FOR EACH ROW 针对每个行都有作用,避免了INSERT一次插入多条语句 触发器定义规则 触发器按每个表每个事件每次地定义...需要知道以下几点: 1 在INSERT触发器代码内,可引用一个名为NEW的虚拟表,访问被插入的行 2 在BEFORE INSERT触发器中,NEW中的值也可以被更新(允许更改插入的值) 3 对于AUTO_INCREMENT...这在此例中并不是必需的,不过也没有害处。使用BEGIN END块的好处是触发器能容纳多条SQL语句。

    2.3K30
    领券