众数
- 情况①:一组数据中,出现次数最多的数就叫这组数据的众数。
举例:1,2,3,3,4的众数是3。 - 情况② :如果有两个或两个以上个数出现次数都是最多的,那么这几个数都是这组数据的众数。
举例:1,2,2,3,3,4的众数是2和3。 - 情况③:如果所有数据出现的次数都一样,那么这组数据没有众数。
举例:1,2,3,4,5没有众数。
问题:需要找出某一列的众数(即在一组数据里出现次数最多的那个数)。例如,希望找出 DEPTNO 等于 20 的部门里员工工资的众数。就如下示例而言,众数为 3000。
select sal
from emp
where deptno = 20
order by sal
SAL
----------
800
1100
2975
3000
3000
- 步骤1: DEPTNO 等于 20 的筛选条件下,将工资作为分组主键,求每一个工资金额的条目数
- 步骤2:借助开窗函数,对条目数进行降序排列,且排序方法为dense_rank并列排序(相同的值为同一序号,不跳过重复序号——1,1,2)
- 步骤3:筛选出排序为1的,且count条目数大于1的(排除情况3)
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
)
)
where rnk = 1
and cnt > 1 -- 剔除情况3
分位数
四分位数(Quartile)也称四分位点,是指在统计学中把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。它是一组数据排序后处于25%,中位数和75%位置上的值。四分位数是通过3个点将全部数据等分为4部分,其中每部分包含25%的数据.
percentile
SELECT `stock_name`, percentile(`target_amount`,0.25) FROM input
group by `stock_name`
SELECT `stock_name`, percentile(`target_amount`,array(0.25,0.75)) FROM input
group by `stock_name`
标签:20,name,sal,众数,中位数,sql,select,stock
From: https://www.cnblogs.com/tian1022/p/17093069.html