zoukankan      html  css  js  c++  java
  • [原]计算乘积的聚合函数跑哪去了呢?

    非常郁闷,笨笨的Excel有个product函数可以用于计算某一列的乘积,但是Oracle,SQL Server都没有,貌似MySQL也没有。

    看了一下asktom,貌似要自己写一个product的function,郁闷郁闷。

    突然,同事提出尝试变换一下,可是乘法已经是最基本的四则,莫非要变换成加法?!@_@

    还是这位同事提出可以用指数、对数的方式变换乘法,如下:

    x \cdot y \Rightarrow  e^{log_{e}x\cdot y}  \Rightarrow e^ {ln x \cdot y} \Rightarrow e^   {\left(ln x + lny\right)}

    指数和(自然)对数如此复杂的运算符Oracle、SQL Server都有现成的函数,为什么乘积就没有呢?

    想不明白。

    还是说回正题,最终的SQL语句变成这样:

    Oracle:

    select exp(sum(ln( field_name ))) from table_name;

    SQL Server:

    select exp(sum(LOG( field_name ))) from table_name;

    刚才翻了一下SQL Hacks,发现第24个Hack就是描述这个问题,非常推荐大家读一下这本书,保证会让您觉得SQL绝不简单。

    BTW:该书有英文版的CHM下载,也发售了中文版,但中文版的书评不咋地。

  • 相关阅读:
    Linux之wget命令
    Markdown语法
    Windows实时预览markdown
    Python基础教程,Python入门教程(非常详细)
    【转载】UNICODE与ASCII的区别
    Python之虚拟环境
    Linux文件系统管理
    Linux权限管理
    linux用户和用户组管理
    linux 软件安装
  • 原文地址:https://www.cnblogs.com/killkill/p/1724642.html
Copyright © 2011-2022 走看看