MySQL按计数分组

MySQL按计数分组,mysql,Mysql,所以我使用这个查询从数据中获取最频繁的一对 ID| FROM | TO | Type | --|------|-------|-------------| 1 | Brij |Nilesh | Call_In | --|------|-------|-------------| 2 |Jaydip| Vipul | Call_In | --|------|-------|-------------| 3 |Rajesh|Nilesh | Call_In

所以我使用这个查询从数据中获取最频繁的一对

ID| FROM |  TO   |     Type    |
--|------|-------|-------------|
1 | Brij |Nilesh |   Call_In   |
--|------|-------|-------------|
2 |Jaydip| Vipul |   Call_In   |
--|------|-------|-------------|  
3 |Rajesh|Nilesh |   Call_In   |
--|------|-------|-------------|
4 |Jaydip| vipul |   Call_Out  |
--|------|-------|-------------|
5 |Jaydip| vipul |   Call_In   |
--|------|-------|-------------|
6 | Brij | Nilesh|   Call_Out  |
--|------|-------|-------------|
7 |vipul | Brij  |   Call_In   |
这给了我这样的结果

Select FROM,TO, COUNT('FROM' & 'TO') AS howmany
from table
GROUP BY FROM,TO
但我还需要这些组中调用类型的总和,如

  FROM  |   TO   |howmany|
--------|--------|-------|
  Brij  | Nilesh |   2   |
--------|--------|-------|
 Jaydip | Vipul  |   3   |
--------|--------|-------|
 Rajesh | Nilesh |   1   |
--------|--------|-------|
 vipul  | Brij   |   1   |
所以请建议我查询一下

给你:

Brij  | Nilesh |howmany| Call_In | Call_Out |
------|--------|-------|---------|----------|
Jaydip| vipul  |   3   |    2    |    1     |
------|--------|-------|---------|----------|
Brij  | Nilesh |   2   |    1    |    1     |
------|--------|-------|---------|----------|
Rajesh| Nilesh |   1   |    1    |    0     |
------|--------|-------|---------|----------|
vipul | Brij   |   1   |    1    |    0     |
SELECT FROM, TO, COUNT(*) AS howmany,
       SUM(Type = 'Call_In') AS Call_In, SUM(Type = 'Call_Out') AS Call_Out
FROM table
GROUP BY FROM, TO
试一试


谢谢你的评论,我收到了,我刚刚添加了调用类型的计数,这样我就可以添加它以供将来使用

你问题中的查询看起来不太好…保留的单词列名FROM、to、Type是个坏主意,b应该转义为`FROM`、`to`,等等。别忘了表:。你忘记添加表了吗??在何处添加表名?已修复。它是在正常位置添加的。实际上,我在VB.net中使用这个查询,我得到了这个错误!IErrorInfo.GetDescription因E_FAIL0x80004005而失败。查询关键字中的问题可能是我正在使用保留关键字,但即使在[]中包含所有标题字段,问题也无法解决。MySQL中以保留关键字命名的字段应包含在倒勾“`”中。
Select FROM, TO, COUNT(*) AS howmany,
  sum(case when type = 'Call_In' then 1 else 0 end) as Call_In,
  sum(case when type = 'Call_Out' then 1 else 0 end) as Call_Out
from table 
GROUP BY FROM,TO
Select 
  `FROM`, `TO`, 
  COUNT(*) AS howmany,
  SUM(CASE Type WHEN 'Call_In' THEN 1 ELSE 0 END) AS Call_In,
  SUM(CASE Type WHEN 'Call_Out' THEN 1 ELSE 0 END) AS Call_Out
from table GROUP BY `FROM`, `TO`