Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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
Mysql SQL命令对多列的结果进行计数?_Mysql_Sql - Fatal编程技术网

Mysql SQL命令对多列的结果进行计数?

Mysql SQL命令对多列的结果进行计数?,mysql,sql,Mysql,Sql,考虑以下名为“calls”的SQL表,该表是John电话账单中电话的完整列表: Sample Data Set for a Call log: from, to, length (min) John, Jill, 15 John, Jill, 7 Jill, John, 4 John, Jill, 6 John, Jill, 9 我发现以下查询: SELECT calls.from, calls.to, COUNT(1) AS call_count FROM `mydb.calls` AS c

考虑以下名为“calls”的SQL表,该表是John电话账单中电话的完整列表:

Sample Data Set for a Call log:
from, to, length (min)
John, Jill, 15
John, Jill, 7
Jill, John, 4
John, Jill, 6
John, Jill, 9
我发现以下查询:

SELECT calls.from, calls.to, COUNT(1) AS call_count
FROM `mydb.calls` AS calls
WHERE calls.from = "John" OR calls.to = "John"
GROUP BY calls.from, calls.to
ORDER by call_count DESC
给我以下结果:

row, from, to, call_count
1, John, Jill, 4
2, Jill, John, 1
从John的角度来看,我真正想要的和我不知道的是如何统计入站和出站呼叫的总结果。我希望基本上显示以下内容:

row, who, inbound, outbound, total
1, Jill, 1, 4, 5

任何帮助都将不胜感激

您可以对分组键使用条件逻辑:

SELECT (CASE WHEN c.from = 'John' THEN c.to ELSE c.from END) as who, 
       COUNT(*) AS call_count
FROM `mydb.calls` c
WHERE 'John' in (c.from, c.to)
GROUP BY who
ORDER by call_count DESC;

SELECT (CASE WHEN c.from = 'John' THEN c.to ELSE c.from END) as who, 
       COUNT(*) AS call_count,
       SUM(c.from = 'John') as inbound,
       SUM(c.to = 'John') as outbound
FROM `mydb.calls` c
WHERE 'John' in (c.from, c.to)
GROUP BY who
ORDER by call_count DESC

太快了!去试试看。看起来确实管用!非常感谢。如何添加两个额外的列?即入出境栏目?非常感谢!你是一个偶然的自由职业者吗?仅供参考-当从BQ运行时,我必须使用SUM(CAST(c.from='John'AS INT64))作为inbound@AlwaysLearning . . . 您的问题被标记为MySQL,此代码将在MySQL中运行。