SQLSERVER,求平均数,最大,最小,中位数,众数

9 篇文章 0 订阅
3 篇文章 0 订阅

SQLSERVER,求平均数,最大,最小,中位数,众数

SQLSERVER,求平均数,最大,最小,中位数,众数


SELECT 
--    *,
    t1.remark,
    t1.my_count,
    t1.my_sum,
    t1.my_avg,
    t1.my_min,
    t1.my_max,
/*my_median : 中位数*/
    t2.my_median,
/*my_most : 众数*/
    t3.my_most,
    'xxx' AS q
FROM (
    SELECT 
        remark,
        COUNT(job_status) AS my_count,
        SUM(job_status) AS my_sum,
        AVG(job_status) AS my_avg,
        MIN(job_status) AS my_min,
        MAX(job_status) AS my_max
    FROM  demo.sys_job_po
    GROUP BY 
        remark
)AS t1
LEFT JOIN 
(/*=========中数==================*/
    SELECT 
        remark,
        AVG(job_status*1.0) AS my_median
    FROM (
        SELECT 
            ROW_NUMBER() OVER(PARTITION BY remark ORDER BY job_status) AS my_row,
            COUNT(1) OVER(PARTITION BY remark ) AS my_count,
            job_status,
            remark
        FROM  demo.sys_job_po
    )AS a
    WHERE my_row = my_count/2 +1
        OR my_row = (CASE WHEN my_count%2 = 0 THEN my_count/2 ELSE my_count/2 +1  END)
    GROUP BY 
        remark
/*===========================*/
)AS t2 ON t2.remark = t1.remark 
    
LEFT JOIN 
(/*=========众数==================*/
    SELECT
        remark,
        my_row,
        job_status AS my_most
    FROM (
        SELECT remark,
            ROW_NUMBER() OVER(PARTITION BY remark ORDER BY my_most DESC) AS my_most_row_id,
            my_row,
            job_status
        FROM (
            SELECT  remark,
                ROW_NUMBER() OVER(PARTITION BY remark ORDER BY job_status) AS my_row,
                COUNT(job_status) OVER(PARTITION BY remark, job_status) AS my_most,
                job_status
            FROM  demo.sys_job_po
        )AS a
    )AS b 
    WHERE my_most_row_id = 1
/*===========================*/
)AS t3 ON t3.remark = t1.remark 


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值