server sql 众数_sql 语句系列(众数中位数与百分比)[八百章之第十五章]

众数

众数就是出现最多的那个数。

select sal,count(*) as cnt

from emp

where DEPTNO=20

group by sal

通过分组把他们的行数计算出来。那么最关键的部分在于,你如何知道最大值。

是的我们可以查出当前最大值,然后再取出最大值的sal。但是这肯定要用到两个临时视图。

注:我们不能通过排序cnt,然后取值第一个,因为可能存在相同的行数。

解决方案:通过dense_rank 进行排序。

科普一下概念:

row_number的用途非常广泛,排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号。

rank函数用于返回结果集的分区内每行的排名,行的排名是相关行之前的排名数加一。简单来说rank函数就是对查询出来的记录进行排名,与row_number函数不同的是,rank函数考虑到了over子句中排序字段值相同的情况,如果使用rank函数来生成序号,over子句中排序字段值相同的序号是一样的,后面字段值不相同的序号将跳过相同的排名号排下一个,也就是相关行之前的排名数加一,可以理解为根据当前的记录数生成序号,后面的记录依此类推。

dense_rank函数的功能与rank函数类似,dense_rank函数在生成序号时是连续的,而rank函数生成的序号有可能不连续。dense_rank函数出现相同排名时,将不跳过相同排名号,rank值紧接上一次的rank值。在各个分组内,rank()是跳跃排序,有两个第一名时接下来就是第三名,dense_rank()是连续排序,有两个第一名时仍然跟着第二名。

答案:

sql server

select sal

from(

select sal,DENSE_RANK() over(order by cnt desc) as rnk

from (select sal,count(*) as cnt

from emp

where DEPTNO=20

group by sal

) x) y

where rnk=1

mysql

select sal,count(*) as cnt

from EMP

where DEPTNO=20

group by sal

HAVING COUNT(*)>=all(

select count(*)

from EMP

where DEPTNO=20

group by sal

)

因为mysql 没有DENSE_RANK,所以只能通过大于等于所有值来完成。这样就相当于查询了两遍。

中位数

这个比较简单:

sql service

select avg(SAL) as sal from

(select SAL,COUNT(*) over() total,CAST(COUNT(*) over() as decimal)/2 mid,CEILING((CAST(COUNT(*) over() as decimal)/2)) as next,

ROW_NUMBER() over(order by sal) rn

from emp

where DEPTNO=20) x

where (total%2=0 and rn in(mid,mid+1))

or (total%2=1 and rn=next)

可能看起来比较复杂,拆开来一下:

select SAL,COUNT(*) over() total,CAST(COUNT(*) over() as decimal)/2 mid,CEILING((CAST(COUNT(*) over() as decimal)/2)) as next,

ROW_NUMBER() over(order by sal) rn

from emp

where DEPTNO=20

这样就很清晰了。

mysql:

select avg(x.sal)

FROM(

select e.sal

from EMP e,EMP d

where e.deptno=d.deptno

and e.deptno=20

GROUP BY e.SAL

HAVING SUM(case when e.sal=d.sal then 1 else 0 end)>=abs(sum(sign(e.sal-d.SAL)))) x

一开始我也很懵逼,后来这样:

select e.sal,SUM(case when e.sal=d.sal then 1 else 0 end),abs(sum(sign(e.sal-d.SAL)))

from EMP e,EMP d

where e.deptno=d.deptno

and e.deptno=20

GROUP BY e.SAL

如果自己相同的数大于等于它左右两边差距数,那么其是中位数。

百分比

其他没什么值得注意的,就是算除法。

唯一值得关注的是:

如果是int类型,那么应该转换,再去计算。

CAST(x.d10 as decimal)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【干货】快速部署微软开源GPU管理利器: OpenPAI

介绍 不管是机器学习的老手,还是入门的新人,都应该装备上尽可能强大的算力。除此之外,还要压榨出硬件的所有潜力来加快模型训练。OpenPAI作为GPU管理的利器,不管是一块GPU,还是上千块GPU,都能够做好调度&a…

python调用ansysworkbench_Workbench通过Python设定材料参数

微信公众号:CAE技术分享以下一段代码是在Workbench中通过Python设定材料的弹性模量和泊松比参数:# encoding: utf-8# Release 16.0SetScriptVersion(Version"16.0.361")template1 GetTemplate(TemplateName"EngData")system1 temp…

现代软件工程 结对/团队作业 - 汉字的 2048 + 俄罗斯方块

一个很有趣的软件工程/编程作业,如果把汉字构成的规律运用在 2048 俄罗斯方块这样的游戏中,会有什么效果呢? (链接1, 链接2) 既然是软件工程的作业, 那就要体现出一些工程的特性: 作业要求: 1) 学生自行…

invoke 按钮点击_h5+ app内点击按钮实现复制功能 实现方法

在项目中由于要实现点击按钮复制功能,我用的是H5APP,实现代码如下(包括安卓IOS):/*** //参数copy是要复制的文本内容* tip 复制成功后的提示语,可空*/function copy_fun(copy,tips) {if(!tips){tips"已成功复制到剪贴板"…

机器学习平台建设

本文从机器学习平台的架构开始,再到具体的功能,然后从需求的角度带给读者思考,找到合适的机器学习平台建设之路。最后,推荐了微软开源开放的机器学习平台OpenPAI,是可私有部署的机器学习训练平台。 本文不少要点都可以…

型管件的作用_管道工程基础 - 管件和管道附件的布置规定

概述1.1 管件的用途1.2 管件的种类根据管件的端部连接形式可将管件分为对焊连接管件、承插焊连接管件、螺纹连接管件、法兰连接管件以及其它管件。管件和管道附件的布置2.1管件的布置(1)弯头宜选用曲率半径等于1.5倍公称直径的长半径弯头;输送气固、液固两相流物料的…

现代软件工程 作业汇总

文档属于这个专栏: ​​​​​​现代软件工程讲义 目录_SoftwareTeacher的博客-CSDN博客 备份:现代软件工程课程 参考:各个学校的编程/软工作业列表 ------- 软件工程的作业 ------- 很多老师反映软件工程的作业题不好出,学生做的…

现代软件工程 作业 第一周博客作业

(软件工程作业汇总) 第一周的博客作业 (这是历届学生的练习中, 从各个老师的作业中汇集而来,特别是北航的作业,东北师大的作业) 1. 介绍自己,建博客 在 http://www.csdn.net 建账号。关注老师和助教,关注一些和你一起…

java grpc 客户端处理 go 服务端多返回值_grpc基础实践(二)

在此篇中我们将简要介绍关于grpc对java客户端的实现。在开始开发前,我们需要先导入io.grpc grpc-netty 1.11.0io.grpc grpc-protobuf 1.11.0io.grpc grpc-stub 1.11.0如果是Android除了这几个包外,你可能还需要一个javax.annotation:javax.annotation-ap…

现代软件工程 作业 团队第一个作业

这是现代软件工程作业系列的一部分 1. 团队成员介绍 介绍每个成员(照片,主页,技术特长,在团队中担任的角色)。 建议拍一张有创意的合影。 在介绍的时候,可以采用艺术照等形式, 保护同学的隐私,不想说明真实…

asp.net 文本框显示xml格式数据_Excel 办公小技巧,查找和替换数据,您值得拥有...

在数据处理的过程中,有时需要在工作表中查找一些数据,以便查看或修改数据。若工作表的数据能一目了然,则可手动进行查找,但在记录繁多的工作表中查找所需数据并替换,效率比较低,而且极易出现遗漏。这时就可…

webpack打包后的文件夹是空的_vue+webpack 打包文件 404 页面空白的解决方法

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问&#xf…

微软认知服务应用秘籍 – 与机器人聊知识

在本篇博客中,我们将会学习到零代码情况下,如何利用已有的技术建立自己的知识问答系统,这种系统的可以广泛适用于学校、企业、客服、政府公开信息等领域,代替传统的电话咨询、电子邮件沟通等高人工负荷的方式。 建立知识库 什么…

.net 开发怎么实现前后端分离_ASP.NET Core模块化前后端分离快速开发框架介绍

源码地址GitHub:https://github.com/iamoldli/NetModular演示地址地址:http://118.24.75.170:6220/账户:admin密码:admin前端框架演示地址(临时)地址:http://progqx5cu.bkt.clouddn.com/skins/index.html#/账户&#x…

微软认知服务应用秘籍 – 支持跨平台客户端的视觉服务中间层

不断演进的应用场景 初级应用场景—宅在家里 场景:Bob同学有一天在网上看到了一张建筑物的图片,大发感慨:"好漂亮啊!这是哪里?我要去亲眼看看!"Bob同学不想问别人,可笑的自尊心让他…

python建立列表并输入_python操作列表

遍历列表 for magic = [a,b,c] for m in magic: print(m) 输出控制台 image.png 深入for以及for之后进行操作 for m in magic: print(m.title()+ good boy) print(hahaha) 输出控制台 image.png 创建数值列表 使用函数range for value in range(1,5): print(value) 输出控制台 …

现代软件工程 作业 原型设计

[ 现代软件工程 作业系列] [ 这个作业来自福州大学 ] 软件工程课不是大家埋头写程序的课, 而是教给大家在软件需求 - 设计 - 实现 - 测试 - 维护 过程中的原理,方法和工具。下面我们就看如何用原型设计工具来帮助我们理清用户需求。 一、阅读《构建之法…

就业技术书文件表格_429页标准指南,教你如何管理工程监理文件资料,丰富图表一看就会...

房屋建筑工程监理文件资料的管理,参差不齐,也给监理工作带来了很大障碍。这份房建工程监理文件资料管理标准指南,能够帮助广大监理和资料员们实现监理文件资料标准化管理,能够有效地补充和支撑现场监理工作,对于工程资…

微软认知服务应用秘籍 – 君子动口不动手

概述 科技的不断发展带动着人们生活质量不断的提升,其中一方面就体现在日常家庭生活中,智能设备层出不穷,给人们的生活带来了很大的便利。 以电视为例,几十年前的电视还是按钮式的,每次换台还要跑到电视跟前&#xf…

一阶广义差分模型_经济学中的序列相关(自相关)

序列相关性异方差性表现于模型的随机误差项。我们将讨论模型的随机误差项违背了互相独立的基本假设的情况,称为序列相关性。序列相关性同样表现于模型的随机误差项。一、序列相关性(Serial Correlation )对于模型i1,2,…,n随机误差项互相独立的基本假设表现为&#…