题目:

Numbers 表保存数字的值及其频率。

在此表中,数字为 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 3,所以中位数是 (0 + 0) / 2 = 0。

请编写一个查询来查找所有数字的中位数并将结果命名为 median 。

解题思路:

可以借助之前力扣569-员工薪水中位数的题解思路,利用窗口函数对频率分别以正序和逆序方式求和,然后求正序和逆序大于频率总值一半的公共数值,最后对所有符合条件的num求平均值就为题目所求的中位数。

①先求出以numbers为升序和降序时的总和;

1 SELECT number,
2 SUM(frequency) over(ORDER BY number) asc_accumu,
3 SUM(frequency) over(ORDER BY number DESC) desc_accumu
4 FROM numbers;

注意:numbers这一列最后是以第二个Sum中的order by 降序排序的,我实验了如果只有第一个sum则就是升序排序。

②求所有频率的总和;

1 SELECT SUM(frequency) total
2 FROM numbers;

③加上where条件,要求正序和逆序是要大于等于总和的一半,在求出平均值即可。

 1 SELECT
2 ROUND(AVG(b.number), 1 ) median
3 FROM
4 (
5 SELECT
6 number,
7 SUM( frequency ) over ( ORDER BY number ) asc_accumu,
8 SUM( frequency ) over ( ORDER BY number DESC ) desc_accumu,
9 SUM( frequency ) total
10 FROM
11 numbers a
12 ) as b
13 WHERE asc_accumu >= total/2 AND desc_accumu >= total/2;

小知识:

①中位数思路

②sum() over():

SELECT id,name,salary,
SUM(salary) over (PARTITION BY id ORDER BY name) AS a
FROM employee b;

说明:
1执行:"ORDER BY name" 按照name进行升序排序。
2执行:"sum(salary)" 对salary进行求和,
求和特点:第n行的和总是等于 第n行 + n-1行 + n-2 的和(如:第3行的和总是第3行和第1和第2行三行的和)。

力扣571(MySQL)-给定数字的频率查询中位数(困难)的更多相关文章

  1. 力扣——single number (只出现一次的数字) python实现

    题目描述: 中文: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 英 ...

  2. 力扣——single number 2(只出现一次的数字 2) python实现

    题目描述: 中文: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? ...

  3. 力扣Leetcode 面试题56 - I. 数组中数字出现的次数

    面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...

  4. JS数据结构第六篇 --- 二叉树力扣练习题

    1.第226题:翻转二叉树 递归+迭代两种实现方式: /** 反转二叉树 * Definition for a binary tree node. * function TreeNode(val) { ...

  5. 力扣(LeetCode)删除排序链表中的重复元素II 个人题解

    给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 思路和上一题类似(参考 力扣(LeetCode)删除排序链表中的重复元素 个人题解)) 只不过这里需要用到一个前 ...

  6. C++双指针滑动和利用Vector实现无重复字符的最长子串—力扣算法

    题目: 力扣原题链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 给定一个字符串, ...

  7. 力扣 ——Remove Duplicates from Sorted List II(删除排序链表中的重复元素 II)python实现

    题目描述: 中文: 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4-> ...

  8. 力扣—one plus(加一) python实现

    题目描述: 中文: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头 ...

  9. 力扣——Next Permutation(下一个排列) python实现

    题目描述: 中文: 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许 ...

  10. 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数

    最大数 力扣 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说 ...

随机推荐

  1. k8s通过help、dry-run、explain提高编写yaml效率

    在Kubernetes(k8s)环境中,help.dry-run和explain命令可以帮助你提高编写YAML文件的效率.这些命令提供了关于资源定义.命令用法和字段说明的信息,从而让你能够更快速.更准 ...

  2. rancher添加用户报错x509: certificate has expired Internal error occurred: failed calling webhook "rancherauth.cattle.io":

    错误信息: Internal error occurred: failed calling webhook "rancherauth.cattle.io": Post https: ...

  3. day18--Java集合01

    Java集合01 1.什么是集合? 前面我们保存数据使用的是数组,数组有不足的地方,我们来分析一下: 长度开始时必须指定,而且一但指定不能更改 保存的必须是同一类型的元素 使用数组进行增加/删除元素的 ...

  4. struts1之global-forwards

    当你的某个转发要经常用,并且要携带某些数据(request)的时候用全局转发,也就是global-forwards,例如我们在分页的时候,或者得到数据列表的时候.. ForwardAction呢,是为 ...

  5. 【3D可视化】3D可视化在智慧园区的应用

    随着5G运用和新基建政策,构建智慧城市系统成为当下城市管理的热门需求,智慧园区建设的核心是3D可视化平台,利用它可以提高企业园区智能化.3D数字化管理服务水平. 一.智慧园区概念 "3D可视 ...

  6. vue基础知识和原理(一)

    1. vue基础知识和原理 1.1 初识Vue 想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象 demo容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法 demo容器 ...

  7. 一种非常简单的读取json文件的类库

    1.现在我介绍一个类库NewLife,非常流批 先介绍它读取json吧 WPF前台随便绑定一下 <TextBlock Text="{Binding ArticleText}" ...

  8. KingbaseES V8R6 复制冲突之锁类型冲突

    背景 昨天遇到客户现场的一个有关复制冲突的问题 备库报错:ERROR: canceling statement due to conflict with recovery,user was holdi ...

  9. HTTPS&SPDY&HTTP2&QUIC&HTTP3

    HTTPS 密钥交换,加密和解密 SPDY&HTTP2 QUIC&HTTP3

  10. #zkw线段树,扫描线,dp,离散#NOIP2020.9.26模拟speike

    分析 由于可以走边界,那么最短路径一定按横坐标递增并且经过矩形的顶点, 考虑扫描线,找到当前线段(矩形右边界可以忽略)两个端点离的最近而又可达的线段, dp一下并用线段树维护就可以了 代码 #incl ...