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

如何将Order BY放在SQL UNION中,以便TOTALS始终显示为最后一行?

在 SQL 中,UNION 用于将两个或多个 SELECT 语句的结果集组合在一起,并删除重复的行。因此,在 UNION 中,我们不能直接使用 ORDER BY 子句。但是,我们可以使用子查询或临时表来实现在 UNION 中添加 ORDER BY 的功能。

以下是一个示例,展示如何将 ORDER BY 放在 SQL UNION 中,以便 TOTALS 始终显示为最后一行:

代码语言:sql
复制
SELECT * FROM (
    SELECT 'A' AS type, SUM(value) AS total
    FROM table1
    GROUP BY type
    UNION
    SELECT 'B' AS type, SUM(value) AS total
    FROM table2
    GROUP BY type
    UNION
    SELECT 'TOTALS' AS type, SUM(value) AS total
    FROM (
        SELECT 'A' AS type, value FROM table1
        UNION
        SELECT 'B' AS type, value FROM table2
    ) AS subquery
) AS result
ORDER BY
    CASE
        WHEN type = 'TOTALS' THEN 1
        ELSE 0
    END DESC,
    type ASC;

在这个示例中,我们首先使用 UNION 将两个 SELECT 语句的结果集组合在一起。然后,我们使用子查询将这些结果集与 TOTALS 行组合在一起。最后,我们使用 ORDER BY 子句将 TOTALS 行放在最后一行,并按照其他行的排序规则进行排序。

需要注意的是,这个示例仅仅是一个示例,具体的实现方式可能会因为数据库类型和数据结构的不同而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

客快物流大数据项目(九十七):ClickHouse的SQL语法

system.one仅包含一行数据(此表实现了与其他数据库管理系统的DUAL相同的功能)。...最后的FINAL修饰符仅能够被使用在SELECT from CollapsingMergeTree场景。当你FROM指定了FINAL修饰符时,你的查询结果将会在查询过程中被聚合。...常量不能作为聚合函数的参数传入聚合函数,例如sum(1)。WITH TOTALS修饰符如果使用了WITH TOTALS修饰符,你将会在结果得到一个被额外计算出的行。...ORDER BY子句如果使用ORDER BY子句,则该子句中必须存在一个表达式列表,表达式列表每一个表达式都可以分配一个DESC(降序)或ASC(升序),如果没有显示指定则默认以ASC方式进行排序。...作为UNION ALL查询的部分不能包含在括号内。ORDER BY与LIMIT子句应该被应用在每个查询,而不是最终的查询

3.1K61
  • PostgreSQL HAVING子句

    使用6个SQL用于6个country(USA除外)的每个年度总计,6个SQL用于所有年份的国家统计,一个SQL用于所有country的年度统计,最有一个SQL用于全部总计。...然后将这14个SQL于13个UNION操作组合在一起: -- country, year totals select c.ctry_name, i.year_nbr, sum(i.item_cnt) as....... .... -- unions for each of the 6 countries excluding USA UNION -- totals for all countries by year...从invoice获取14次数据,从而进行14次聚合,最后执行一组昂贵的UNION操作。 理解group by和having后,我们可以写一个更简单更加高效的SQL。...此示例基于的实际 sql 有 24 个小查询,union每个查询结合了两个以上的表。与原始代码的 200 多行相比,重写的 sql 仅 10 行长,并且在几秒钟内运行,而原始查询则需要半个多小时。

    89930

    SQL注入到脚本

    基于整数的检测 由于会显示错误消息,因此很容易检测到网站的任何漏洞。可以使用以下任何和所有方法检测SQL注入。...字符串检测 正如我们在前面的"SQL简介"中所看到的,SQL查询的字符串在用作值时放在引号之间(例如"test"): SELECT id,name FROM users where name='test...使用UNION开发SQL注入 使用UNION开发SQL注入的步骤如下: 查找要执行并集的列数 查找页面回显的列 从数据库元表检索信息 从其他表/数据库检索信息 为了通过SQL注入执行请求,需要找到查询第一部分返回的列数...SELECT 1,2,3)的一个值替换为要运行的函数,以便在响应检索结果。...现在,我们需要以正确的格式John提供信息,我们需要将用户名和密码放在一行上,并用冒号 ':'分隔。

    2.1K10

    MS SQL Server partition by 函数实战二 编排考场人员

    功能实现 生成考场数据 根据提供的EXCEL考场文件,导入到考场表(dlzp_kc)如何将EXCEL文件导入成数据集,可参考我的文章《C#实现Excel合并单元格数据导入数据集》,成功导入后,在查询分析器示例如下图...() over(order by kcbh) zwh,最后我们通过左连接即可得到我们想要的分配明细情况结果。...: 如图我们可以看到 lzkzh 左截取的4位准考证分类号,zkzh2最小号,zkzh3最大号(本考场内),像第6考场,有两个分类范围,为了便于更直观的显示数据,将其显示一行,我们可以编写存储过程来实现这一需求...by a.kcbh end 运行该存储过程可以将多行统计数据合并为单行进行显示显示结果如下效果: 小结 1、我们的实际操作中有一百多个考场,避免冗长的代码,示例代码片断并不完整,在这里仅为方便参考...更多方法可参考我的文章 《MS SQL Server STUFF 函数实战 统计记录行转为列显示》 3、更多 partition by 的聚合统计方法可参考我的文章 《MS SQL Server partition

    11610

    SQL Server优化50法

    如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置至少是计算机安装的物理内存的 3 倍。...游标可以按照它所支持的提取选项进行分类: 只进必须按照从第一行最后一行的顺序提取行。FETCH NEXT 是唯一允许的提取操作,也是默认方式。 可滚动性可以在游标任何地方随机提取任意行。...34、没有必要时不要用DISTINCT和ORDER BY,这些动作可以改在客户端执行。它们增加了额外的开销。这同UNIONUNION ALL一样的道理。...by postdate desc 35、在IN后面值的列表,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数。...存储过程是编译好、优化过、并且被组织到一个执行规划里、且存储在数据库SQL语句,是控制流语言的集合,速度当然快。反复执行的动态SQL,可以使用临时存储过程,该过程(临时表)被放在Tempdb

    2.1K70

    Oracle学习笔记整理手册

    PS:本博客收录自己工作遇到学到的一些Oracle技能,有时间就更新整理一下 (1)Oracle正则匹配使用 PS:这条SQL可以通过正则匹对查询一下,表A的字段a是否有非数字的数据,有时候数据表的一些字段是...=、^=、 可移植性好 (9)1=1和1=0 select * from t where 1=1 1=1条件始终true,是为了避免负责的条件查询出现错误 1=0条件始终未false,结果不会返回任何数据...NVL2函数的格式如下:NVL2(expr1,expr2, expr3) 含义是:如果该函数的第一个参数空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。...: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序; union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;...unitInfo.unit_code) > 0 then 'closed' else 'open' end as state select 1 from mytable;与select anycol(目的表集合的任意一行

    1K10

    两个实用的SQL高级函数

    SQL刷题专栏 SQL145题系列 SQL Server从2012版本开始,引入了LEAD和LAG函数,这两个函数可以把之前要关联查询的方法,改为可直接获取当前数据上下相邻多少行数据,可以很方便的对上下相邻两行的数据进行加减乘除...在 SELECT 语句中使用此分析函数可将当前行的值与先前行的值进行比较。...如果未指定,则默认值 1。 OVER 开窗函数,LAG函数必须与开窗函数一起使用。 GPT 4o国内免费试用,在下方公众号(非本号)后台回复:4o,获取访问方式。...OneArgs,组内的NUM列的值默认向后偏移了一行,每组的第一行用默认的NULL来代替 2、针对TowArgs,使用了2个参数显示的偏移行,NUM的值也是向后偏移一行。...SELECT ID,NUM, LEAD(NUM,1,0) OVER (PARTITION BY ID ORDER BY NUM)-NUM AS Result FROM T 结果: 每组最后一行默认是0,

    9010

    Java性能调优--SQL篇:优化分页查询

    执行计划 以下是执行计划每个字段的含义: 1、id:SQL查询的序列号,id列数字越大越先执行,如果数字一样大,那么就从上往下依次执行。...UNION UNION第二个或之后的SELECT语句取决于外面的查询 UNION RESULT UNION的结果 SUBQUERY 子查询的第一个SELECT DEPENDENT SUBQUERY...,必须重新评估外部查询的每一行 UNCACHEABLE UNION UNION第二个或之后的SELECT,属于无法缓存的子查询 3、table:查询的表名 4、type:查询类型,表示从表查询到行所执行的方式...9、ref:如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示func...执行效率 可以看到,mysql在帮我们获取id从10001~10020的二十条数据的时候,rows字段10020,也就是说扫描了10020条数据,然后去掉前一万条数据进而获取了我们需要的最后二十条数据

    1.3K20

    SQL注入之联合查询注入

    在一个在一个网站的正常页面,服务端执行SQL语句查询数据库的数据,客户端将数 据展示在页面,这个展示数据的位置就叫显示位 联合注入的过程 1、判断注入点 2、判断是整型还是字符型 3、判断查询列数...三、判断查询列数 order by 函数是对MySQL查询结果按照指定字段名进行排序,除了指定字 段名还可以指定字段的栏位进行排序,第一个查询字段1,第二个2,依次 类推。...我们可以通过二分法来猜解列数 输入 order by 4%23 发现页面错误,说明没有4列 输入3列时,页面正常,说明有3列 四、判断显示UNION的作用是将两个select查询结果合并,如下图所示...所以这里无论怎么折腾最后只会出来第一行的查询结果。...只要让第一行查询的结果是空集,即union左边的select子句查询结果空,那么union右边的查询结果自然就成为了第一行,打印在网页上了 可以看到将uid改为-1后第二行打印在页面上。

    1.1K30

    mysql查询缓慢原因和解决方案

    运行 Microsoft SQL Server? 2000 时,可考虑将虚拟内存大小设置计算机安装的物理内存的 1.5 倍。...如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置至少是计算机安装的物理内存的 3 倍。...游标可以按照它所支持的提取选项进行分类: 只进 必须按照从第一行最后一行的顺序提取行。FETCH NEXT 是唯一允许的提取操作,也是默认方式。可滚动性 可以在游标任何地方随机提取任意行。...by postdate desc 35、在IN后面值的列表,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数。...存储过程是编译好、优化过、并且被组织到一个执行规划里、且存储在数据库SQL语句,是控制流语言的集合,速度当然快。反复执行的动态SQL,可以使用临时存储过程,该过程(临时表)被放在Tempdb

    3.3K30

    提交单引号

    语句 输入加号 我们在参数输入1+1,看看返回的数据是不是id等于2的结果,这里注意一下+号在SQL语句是有特效含义的,所以我们要对其进行url编码,最后也就是%2b。...例如: a.首先猜测,当字段2时页面返回错误 b.增加一个字段,3时,页面显示正确 c.再次增加一个字段,4时,页面显示错误 上面的结果,说明字段数就是3,输入的数大于或小于字段数时都会报错...方式2:用order by 查询“order by * -- order by order by查询:在sql语句中是对结果集的指定列进行排序,比如我们想让结果集按照第一列排序就是 order by 1...第一种:我们让第一个查询的结果始终假 上图可看到,什么都没有显示,因为填充时使用的null,所以返回的就是空null....在MySQL,字段名存放在information_schema数据库下columns表column_name字段,这里使用的是columns表。

    1.7K20

    2-SQL语言中的函数

    1.1倍 # 部门号为40的,显示的工资1.2倍,其他部门原价显示 SELECT last_name, department_id, salary 工资, CASE department_id...BY 分组】 【HAVING 筛选条件】 【ORDER BY 排序列表】 sql99语法包括(连接类型): 内连接(INNER) 外连接 左外(LEFT 【OUTER】) 右外(LEFT...employee_id FROM employees WHERE salary=30000); 分页查询 应用场景: 当要显示的数据,一夜显示不全,需要分页提交sql请求 LIMIT 语句放在查询语句的最后...# 分页查询 /* 应用场景: 当要显示的数据,一夜显示不全,需要分页提交sql请求 语法: SELECT 查询列表 FROM 表名 【JOIN TYPE join 表2 ON 连接条件 WHERE...LIMIT 语句放在查询语句的最后 */ SELECT * FROM employees LIMIT 0,5; SELECT * FROM employees LIMIT 10,15; 联合查询

    2.8K10

    数据库PostrageSQL-高级特性

    最后,我们还将介绍一些PostgreSQL扩展。 本章有时将引用Chapter 2的例子并对其进行改变或改进以便于阅读本章。本章的某些例子可以在教程目录的advanced.sql文件中找到。...对于每一行,窗口函数都会在当前行同一分区的行上进行计算。 我们可以通过OVER上的ORDER BY控制窗口函数处理行的顺序(窗口的ORDER BY并不一定要符合行输出的顺序。)。...BY子句的顺序每一个可区分的ORDER BY值产生了一个数字等级。...替代方案是,每一个窗口行为可以被放在一个命名的WINDOW子句中,然后在OVER引用它。...州首都有一个附加列state用于显示它们的州。在PostgreSQL,一个表可以从0个或者多个表继承。

    2.6K10

    建议收藏——Mazur 的 SQL 风格指南

    关键字 有些 IDE 能够自动格式化 SQL以便 SQL 关键字之后的空格垂直对齐。...total_revenue from users inner join charges on users.id = charges.user_id group by email 当有多个连接条件时,请将每个条件放在它们自己的缩进行...u,将 charges 缩写 c,这可能很诱人,但这最终会降低 SQL 的可读性 -- 好 select users.email, sum(charges.amount) as total_revenue...在使用任意的 CTE 时,始终使用 final 和 select * from final 。通过这种方式,可以快速检查查询中使用的其他 CTE 输出,以便调试结果。...where details_rank = 1 使用有意义的 CTE 名称 -- 好 with ordered_details as ( -- 不好 with d1 as ( 窗口函数 你可以把它单独放在一行

    90320

    用 Explain 命令分析 MySQL 的 SQL 执行

    derived 是 SQL from 子句中包含的子查询被标记为该值,MySQL 会递归执行这些子查询,把结果放在临时表。下图展示了上述两种类型。...[select_type_d_subquery] unionSQL 在出现在 union 关键字之后的第二个 select ,被标记为该值;若 union 包含在 from 的子查询,外层select...system 表示表只有一行记录,相当于系统表。如下图所示,因为 from 的子查询派生的表只有一行数据,所以 primary 的表连接类型 system。...key 列显示 MySQL 实际决定使用的索引。如果没有选择索引,则值 NULL。 key_len 显示 MySQL 决定使用索引的长度。...根据 val = 3 这个 table filter 过滤,只返回一行数据,所以 filtered 比例33.33%, extra 包含不适合在其他列显示但十分重要的额外信息。

    1.5K00

    用 Explain 命令分析 MySQL 的 SQL 执行

    derived 是 SQL from 子句中包含的子查询被标记为该值,MySQL 会递归执行这些子查询,把结果放在临时表。下图展示了上述两种类型。 ?...unionSQL 在出现在 union 关键字之后的第二个 select ,被标记为该值;若 union 包含在 from 的子查询,外层select 被标记为 derived。...system 表示表只有一行记录,相当于系统表。如下图所示,因为 from 的子查询派生的表只有一行数据,所以 primary 的表连接类型 system。 ?...key 列显示 MySQL 实际决定使用的索引。如果没有选择索引,则值 NULL。 key_len 显示 MySQL 决定使用索引的长度。...根据 val = 3 这个 table filter 过滤,只返回一行数据,所以 filtered 比例33.33%, extra 包含不适合在其他列显示但十分重要的额外信息。

    1.8K11

    看完这篇文章,99%的人都会使用Mysql Explain工具

    id列越大执行优先级越高,id相同则从上往下执行,idNULL最后执行。 2.select_type列 select_type:表示对应行是简单查询还是复杂查询 simple:简单查询。...MySQL会将结果存放在一个临时表,也称为派生表(derived的英文含义) union:在 union 的第二个和随后的所有select 下面这个例子主要来了解(simple)查询类型 EXPLAIN...当有 union 时,UNION RESULT 的 table 列的值,1和2表示参与 union 的 select 行id。...关于下图中,给出优化的sql,显示查询的是dual表,这个是mysql的自带的空表,像我们上面的sql,mysql会直接将数据解析到空表,查询返回出去,所以效率才会高 ?...7.key_len列 这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引的哪些列。

    53410
    领券