Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.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表中获取每个ip的计数和总和_Mysql - Fatal编程技术网

从mysql表中获取每个ip的计数和总和

从mysql表中获取每个ip的计数和总和,mysql,Mysql,我一直在考虑从一个表生成一个IP地址报告并插入到另一个表中,但还没有成功或找到一个可以让我这样做的资源 我的IP表,其中包含许多重复的IP,并希望为每个不同的IP计算分钟数和计数(名称) ip name minutes 199.199.199.199 nick 23 199.199.199.200 nick 3 199.199.199.200 bob 34 199.199.199.201 bob

我一直在考虑从一个表生成一个IP地址报告并插入到另一个表中,但还没有成功或找到一个可以让我这样做的资源

我的IP表,其中包含许多重复的IP,并希望为每个不同的IP计算分钟数和计数(名称)

ip                  name    minutes
199.199.199.199     nick    23
199.199.199.200     nick    3
199.199.199.200     bob     34
199.199.199.201     bob     56
199.199.199.201     sue     12
199.199.199.202     sue     45
199.199.199.202     helen   65
199.199.199.202     helen   15
我目前的方法如下

SELECT DISTINCT(distinct) as ip FROM `ip.ip_stats`;
在我的PHP中,我将每个不同的ip地址添加到一个数组中

$arr = array("199.199.199.199","199.199.199.200","199.199.199.201","199.199.199.202");
生成阵列后,我将遍历阵列中的每个阵列

foreach($arr as $ip){
     SQL ="SELECT COUNT(name) as cnt, SUM(minutes) as sum FROM `ip.ip_stats` WHERE ip='$ip'";
     $result = mysqli_query($con, $query);

     while ($row = mysqli_fetch_assoc($result)) {
          mysqli_query($con, "INSERT INTO ip.ip_report ( ip, count, sum )   
          VALUES ( $ip, $cnt, $sum ) 
     }
}
因此,在获得数组中每个ip的总和和计数后,我将循环并插入到报告表中

我的主要问题是它的规模和运行所需的时间,我有超过1000万行的数据,每分钟只运行3-5行(我的示例中是大表)

有没有一种方法可以使用mysql选择不同的数据库并生成报告? 是否有实现以下查询的方法?使用一个循环还是一段时间

SELECT SUM(minutes), COUNT(name) FROM ( SELECT DISTINCT(ip) FROM ip.ip_stats) ?

我相信你在追求:

SELECT s.ip, s.name, SUM(s.minutes) AS TotalMinutes, COUNT(s.name) AS NameCount
FROM ip_stats s
GROUP BY s.ip, s.name

谢谢玲儿,这将工作得很好,我完全忘记了GROUP BY,这绝对是我想要的答案!
SELECT
    ip,
    COUNT(name) as cnt,
    SUM(minutes) as sum
FROM `ip.ip_stats`
GROUP BY ip
;