繁体   English   中英

分组后计算单个用户的总记录

[英]count total records for individual user after groupBy select

我有一个具有groupBy的mysql选择查询。 我想计算单个用户在group by语句之后的所有记录。 有没有办法直接从mysql吗?

$query = mysql_query('SELECT distinct(tape_no) , user_id, username FROM `audio_history`  group by username , tape_no');
$i=1;
$temp = '';
 while($res = mysql_fetch_object($query)){
  if($temp != $res->username && $temp != ''){
  echo $res->user_id . '---' .$temp  . "$i<br>";
  $i = 0;
  }
 temp = $res->username;
 $count = $i;
 $i++;
 }

sql语句

SELECT distinct(tape_no) ,
 user_id, username 
FROM `audio_history`  
group by username , tape_no

退货

tape_no user_id username    
001 790 adam
422 790 adam
903 001 alic
585 005 cooper
356 005 cooper
697 005 cooper

我希望输出返回为

 uname    uif  count_for_individual_user
 adam     790     2
 alic     001     1
 cooper   005     3

我需要获取最简单的方法而不使用php代码(仅通过查询)。 提前致谢

SELECT username, user_id, count(*)
FROM audio_history
group by username, user_id  

要获得每个用户的tape_no的DISTINCT值的计数,即不计入tape_no的任何“重复”值,请在COUNT聚合添加DISTINCT关键字。

SELECT username                AS uname
     , user_id                 AS uif 
     , COUNT(1)                AS count_for_individual_user
     , COUNT(DISTINCT tape_no) AS count_distinct_tape_no
  FROM `audio_history`
 GROUP BY username, user_id 

给定这些行:

username user_id tape_no
-------- ------- -------
adam     790     001
adam     790     422
adam     790     422

然后上面的查询将

对于COUNT(1)表达式返回3 (因为(adam,790)有三行,并且将

对于COUNT(DISTINCT tape_no)表达式返回2 ,因为(adam,790)tape_no只有两个不同的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM