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下载,也发售了中文版,但中文版的书评不咋地。

  • 相关阅读:
    IGV解读
    box-cox解读
    linux命令eval的用法
    R中导入excel乱码的解决办法
    Django下实现HelloWorld
    python的list求和与求积
    win10下安装Django
    python下实现汉诺塔
    (stm32f103学习总结)—DS18B20
    (stm32f103学习总结)—GPIO结构
  • 原文地址:https://www.cnblogs.com/killkill/p/1724642.html
Copyright © 2011-2022 走看看