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

  • 相关阅读:
    hdu 1429 胜利大逃亡(续)(BFS+位压缩)
    hdu 2955 Robberies
    POJ—Building a Space Station
    POJ-1287 Networking
    POJ-1251 Jungle Roads
    BFS ZOJ problem-1671 Waking Ant
    POJ-1308 Is It A Tree?
    poj 1611The Suspects
    POJ Wireless Network
    POJ 2524 Ubiquitous Religions
  • 原文地址:https://www.cnblogs.com/killkill/p/1724642.html
Copyright © 2011-2022 走看看