簡體   English   中英

如何正確計算 SQL 中的平均值

[英]How to properly calculate averages in SQL

諸如每位員工的收入或每種產品的售價

哪種方法是正確的,是否存在一種方法有效而另一種方法無效的情況?

SUM(revenue)/SUM(employee)

/* OR */

AVG(revenue/employee)

我一直在上面得到不同的答案。

在不了解您的表結構的情況下,很難知道什么適合您。

SUM(revenue)/SUM(employee)將所有收入的總和除以員工的總和(或者可以計算)。

其中AVG(revenue/employee)將對所有revenue/employee求和,然后將結果除以行數。

出於您的目的,我認為第一種方法是合適的。

兩人正在做兩件截然不同的事情。 一個是計算總體平均值(第一個)。 第二個是計算分別處理每一行的加權平均值。

作為一個簡單的例子,考慮一個小表:

employees      revenue
 99               99
  1              100

第一個返回(100 + 99) / 100 = 1.99 如果您有一個包含 100 行的表,每個“員工”一個並且收入是revenue / employee (即1行 99 行, 100行 1 行),這將是相同的平均值。

第二個返回(99 / 99) + (100 / 1) = 101。這將“平等地”對待每一行。 也就是說,它是一個有偏差的平均值。 有時這很有用,但通常不適用於計數。 例如,它可能對某種費率有用。 或者,如果行上的大小大致相同,它可能會很有用。

一般來說,在大多數情況下,根據您問題中的有限信息,您會想要第一種格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM