SQL-cookbook学习笔记(七)~数字运算

                         书的第七章叫使用数字,但是我感觉这个章节名不好理解,反而是数字运算比较形象。       

聚集函数,多行函数

  1. AVG():返回某列的平均值
  2. COUNT():返回某列的行数
  3. MAX():返回某列的最大值
  4. MIN():返回某列的最小值
  5. SUM():返回某列值之和

 

                                           第七章 使用数字

  1. 计算平均值
    1. 使用avg函数求平均值
    2. avg函数忽略null,但不忽略0,所以在求平均值时,要考虑null的处理
    3. 对于具体的平均值,要使用分组语句group by
  2. 求某列中的最小/最大值
    1. max(),min()
    2. 会忽略null,但不忽略0
    3. 对于具体的属性,需要用group by
  3. 对某列的值求和
    1. sum()
    2. 对于具体的属性,需要用group by
  4. 求一个表的行数
    1. count()
    2. 当把列名作为参数传给count,会忽略null;当把*或常量传给count,不会忽略null
    3. 对于具体的属性,需要用group by
  5. 求某列值的个数
    1. 不传*,传具体列名
  6. 生成累积和
    1. DB2和Oracle
      1. 使用窗口版的SUM函数
    2. MySQL,PostgreSQL和SQL server
      1. 使用标量子查询计算累积和
  7. 生成累乘积
    1. DB2和Oracle
      1. 使用窗口版的sum over函数
    2. MySQL,PostgreSQL和SQL server
      1. 使用标量子查询计算累乘积
  8. 计算累计差
    1. DB2和Oracle
      1. 使用窗口版的SUM over函数
    2. MySQL,PostgreSQL和SQL server
      1. 使用标量子查询计算累积差
  9. 计算模式
    1. DB2和SQL server
      1. 使用窗口版的dense_rank函数
    2. Oracle
      1. 在8i中可以使用DB2中的方法
      2. 在9i及更高可以使用max的keep扩展
    3. MySQL,PostgreSQL和SQL server
      1. 使用子查询查找模式
  10. 计算中间值
    1. 解决思路:除了Oracle使用函数计算中间数,其他所有方案都是使用rozenshtein,abramovich和birger在Optimizing Transact-SQL:Advanced Programming Techniques中描述方法为基础。
    2. DB2
      1. 使用窗口函数count(*)over 和row_number
    3. MySQL和PostgreSQL
      1. 使用自连接查找中间数
    4. Oracle
      1. 使用median或percentile_count
    5. SQL server
      1. 使用窗口函数count(*)over 和row_number得到中间数
  11. 求总和的百分比
    1. 解决思路:先乘后除
    2. MySQL和PostgreSQL
      1. 先乘后除
    3. DB2,Oracle和SQL server
      1. 使用内联视图及窗口函数sum over计算出总和,及单独的总和,然后外层进行处罚和乘法
  12. 对可空列做聚集
    1. 解决思路:将null转化为0进行计算
  13. 计算不包括最大值和最小值的均值
    1. 解决思路:排除最大最小值
    2. MySQL和PostgreSQL
      1. 使用子查询排除最高和最低
    3. DB2,Oracle和SQLserver
      1. 使用内联视图及窗口函数max over 和min over生成一个结果集,用来剔除最大和最小
  14. 把字母数字串转换为数值
    1. DB2
      1. 使用translate 和replace,从字母数字串中提取数字字符
    2. Oracle和PostgreSQL
      1. 使用函数translate和replace,从字母数字串中提取数字字符
    3. MySQL和SQL server
      1. 暂无解决方案
  15. 更改累计和中的值
    1. Oracle和DB2
      1. 使用窗口函数sum over创建累积和,并使用case表达式判断事务处理的类型
    2. MySQL,PostgreSQL和SQL server
      1. 使用标量子查询创建累积和,并使用case表达式判断事务处理的类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值