Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql中一列的条件计数_Php_Sql - Fatal编程技术网

php mysql中一列的条件计数

php mysql中一列的条件计数,php,sql,Php,Sql,我想计算x持续时间内的所有买卖。我尝试了以下查询,但没有给出正确的结果 select pair, duration, mode, count(case when mode='BUY' then 1 else 0 end) as BUYS, count(case when mode='SELL' then 1 else 0 end) as SELLS from trends where pair like 'EURAUD ' GROUP BY DURATION, MOD

我想计算x持续时间内的所有买卖。我尝试了以下查询,但没有给出正确的结果

select pair, duration, mode,
       count(case when mode='BUY' then 1 else 0 end) as BUYS,
       count(case when mode='SELL' then 1 else 0 end) as SELLS
from trends
where pair like 'EURAUD '
GROUP BY DURATION, MODE
ORDER BY MODE, DURATION
 duration | mode|BUYS|SELLS
 -------------------------
 1Dy      | BUY | 1  | 1
 1M       | BUY | 18 | 18
 1Wk      | BUY | 1  | 1
 5M       | BUY | 3  | 3
 15M      | SELL| 2  | 2
 1Hr      | SELL| 1  | 1
 1M       | SELL| 25 | 25
 30M      | SELL| 1  | 1
 5M       | SELL| 4  | 4
它显示了上述结果,这是不正确的。它显示以下结果

 duration | mode|BUYS|SELLS
 -------------------------
 1Dy      | BUY | 1  | 0
 1M       | BUY | 18 | 0
 1Wk      | BUY | 1  | 0
 5M       | BUY | 3  | 0
 15M      | SELL| 0  | 4
 1Hr      | SELL| 0  | 1
 1M       | SELL| 0  | 25
 30M      | SELL| 0  | 1
 5M       | SELL| 0  | 4
您想要的是
sum()
,而不是
count()

COUNT()
统计非空值的数量。您的
case
表达式从不返回
NULL
,因此计数总是返回相同的值。无论如何,我更喜欢使用
SUM()

您想要的是
SUM()
,而不是
count()


COUNT()
统计非空值的数量。您的
case
表达式从不返回
NULL
,因此计数总是返回相同的值。无论如何,我更喜欢使用
SUM()

实际上我有一个列名模式,它有“买”或“卖”,所以我不能求和:(@asifhameed…正在求和
case
表达式。实际上我有一个列名模式,它有“买”或“卖”,所以我不能求和:(@asifhameed…正在求和
case
表达式。
select pair, duration, mode,
       sum(case when mode = 'BUY' then 1 else 0 end) as BUYS,
       sum(case when mode = 'SELL' then 1 else 0 end) as SELLS
from trends
where pair like 'EURAUD '
GROUP BY DURATION, MODE
ORDER BY MODE, DURATION;