sql 语句系列(计算的进阶)[八百章之第十六章]

前言

介绍两个实用的sql查询语句。
1.计算平均数时候,去除最大值和最小值。
2.修改累计值。

计算平均数时候,去除最大值和最小值

sql server:

select AVG(sal) from(
select sal,MIN(SAL) over() min_sal,MAX(SAL) max_sal 
from EMP) x
where sal not in(
min_sal,max_sal
)

mysql:

select AVG(sal) 
from EMP
where SAL not in(
(select MIN(sal) from EMP),
(select MAX(sal) from EMP)
)

修改累计值

假设有一张表:
select * from xinyong
sql 语句系列(计算的进阶)[八百章之第十六章]_第1张图片

要实现的效果如下:
sql 语句系列(计算的进阶)[八百章之第十六章]_第2张图片

就是当TRX 为pr的时候进行增,在py的时候进行减法。

答案:

select case when  v.TRX='py' then 'PAYMENT' else 'PURCHASE' end as trx_type,v.AMT,
(select sum(case when x.TRX='py' then -x.AMT else x.AMT end)
from xinyong x
where v.ID>=x.ID
) as balance
from xinyong v

你可能感兴趣的:(sql 语句系列(计算的进阶)[八百章之第十六章])