前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL汇总排序查询

MySQL汇总排序查询

作者头像
诡途
发布2022-01-07 08:25:30
2K0
发布2022-01-07 08:25:30
举报
文章被收录于专栏:诡途的python路诡途的python路

问题

在这里插入图片描述
在这里插入图片描述

两个要求: ①计算出来的字段销售总额保留两位小数; ②排序时,汇总不参与排序,放在最下面。

要求①实现一

case when 加汇总,但是orderby排序对所有行排序,汇总的销售金额最大一直在最上面

代码语言:javascript
复制
SELECT case when grouping(店铺名称)=1 then "汇总" else 店铺名称 end 店铺名称,
round(sum(交易金额),2) as 销售额求和 
FROM test
group by 店铺名称 with rollup 
order by 销售额求和 desc ;

要求①实现二

COALESCE 加汇总,作用类似于方案一中的case when,、都是使用with rollup进行汇总

代码语言:javascript
复制
SELECT COALESCE ( `店铺名称`, '汇总' ) AS 店铺,
round(sum(交易金额),2) AS 销售总额 
FROM test
GROUP BY `店铺名称` WITH ROLLUP 
ORDER BY 销售总额 DESC  

要求②实现一

if 相当于用条件判断添加了一列隐藏列,order by先对店铺进行排序再对销售额排序,这样汇总行就跑最下面去了,因为汇总行的索引为1,其他店铺名称的索引都是0

代码语言:javascript
复制
SELECT COALESCE ( `店铺名称`, '汇总' ) AS 店铺,
round(sum(交易金额),2) AS 销售总额 
FROM test
GROUP BY `店铺名称` WITH ROLLUP 
ORDER BY if (店铺 = '汇总',1,0),销售总额 DESC  

要求②实现二

Sql1 union sql2 union 相当于追加查询,把两个查询结果拼接再一起

代码语言:javascript
复制
(select `店铺名称` ,round(sum(交易金额),2) AS 销售总额 
from  test  group by `店铺名称` 
order by 销售总额 desc) 
union 
(select '汇总',round(sum(交易金额),2) AS 销售总额 
from  test)

友情链接:Mysql 数据分组&条件排序

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 要求①实现一
  • 要求①实现二
  • 要求②实现一
  • 要求②实现二
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档