mysql 中average_MySQL查詢:如何計算一行中的平均值?

当需要在MySQL查询中计算包含NULL值的行的平均值时,可以使用COALESCE函数来处理。通过将NULL值替换为0并除以非NULL值的数量,可以得到正确的平均值。示例查询展示了如何在voting表中计算rank_0、rank_1和rank_2三列的平均值。
摘要由CSDN通过智能技术生成

1

我偶然發現了類似的情況。這很有用:http://tech-blog.borychowski.com/index.php/2009/02/mysql/average-value-in-a-row/

From the page:

從頁面:

When we do:

當我們這樣做時:

SELECT *, (V.rank_0 + V.rank_1 + V.rank_2) / 3

AS row_avg FROM voting V

we only receive correct averages for the rows where all values are not NULL. But when I have e.g. 3, NULL, 4 I’d like to get 3.5 as a return. That’s the moment when function COALESCE() comes handy.

我們只接收所有值都不為NULL的行的正確平均值。但當我有例如3,NULL,4我想得到3.5作為回報。這是函數COALESCE()派上用場的那一刻。

What does COALESCE () do? From MySQL manual we have:

COALESCE()做什么?從MySQL手冊我們有:

Returns the first non-NULL value in the list, or NULL if there are no non-NULL values.

返回列表中的第一個非NULL值,如果沒有非NULL值,則返回NULL。

mysql> SELECT COALESCE(NULL,1);

-> 1

mysql> SELECT COALESCE(NULL,NULL,NULL);

-> NULL

And these information will help us to build another SELECT statement:

這些信息將幫助我們構建另一個SELECT語句:

SELECT *,

#first part

(COALESCE(V.rank_0, 0)

+ COALESCE(V.rank_1, 0)

+ COALESCE(V.rank_2, 0))

/

#second part

(3 -

(COALESCE(V.rank_0 - V.rank_0, 1)

+ COALESCE(V.rank_1 - V.rank_1, 1)

+ COALESCE(V.rank_2 - V.rank_2, 1))

) AS row_avg FROM voting V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值