-1

First things first. I only know MS SQL Server. So, its hard to understand some MySQL syntax. Below statement is in MySQL:

INSERT INTO stats_by_variantstats(variant_id, count, nonzero, sum, avg, sumsq, wavg)
VALUES(5, 1, 0, 0, 0, 0, 0)
ON DUPLICATE KEY UPDATE
        count = count + $count,
        nonzero = nonzero + ($value>0),
        sum = sum + $value,
        avg = sum / (count + 1),
        sumsq = sumsq + ($value * $value),
        wavg = 0.9 * wavg + 0.1 * $value

What is meaning of ($value>0) in above statement (line: 5) for following cases:

  1. $value = 0
  2. $value = 1
  3. $value = 10

Thanks in anticipation.

4

3 回答 3

1

这是一个布尔表达式。其含义与此条件表达式相同:

CASE WHEN $value>0 THEN 1 ELSE 0 END

在您的情况下,每次 a为正时UPDATE,该列都会增加。nonzero$value

于 2013-05-20T03:49:42.920 回答
1

表达方式:

($value>0)

是 MySQL 中的布尔表达式。布尔值被解释为 0 表示假,1 表示真。并非所有数据库都如此,但在 MySQL 中确实如此。

因此,当 $value 为 0 时,则为“0”。当为 1 或 10 时,则为“1”。结果是nonzero当值大于 0 时该字段递增。

换句话说,这相当于:

nonzero = (case when $value > 0 then nonzero + 1 else nonzero end)
于 2013-05-20T03:50:45.767 回答
0

如果 $value 大于 0(正),它将计入“非零”变量。对于每个正数,每个数字都会得到 +1。

于 2013-05-20T03:49:04.010 回答