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`