[英]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.