php mysql中一列的条件计数
我想计算x持续时间内的所有买卖。我尝试了以下查询,但没有给出正确的结果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
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;