sql 关于 count(*)和 group by 的用法

select count(*) from ****** a left join **** group by a._,a._ a._ ……
查询出来的结果是

怎么实现为 结果 是

如表为test,数据如下:

id   grade

1     100

1      80

2      90

2      80

3      90


此时,可用count可求每个id在表中的个数,可用如下sql语句

select id,count(*) as counts from test group by id;

结果如下:

id   counts

1       2

2       2

3       1


但group by还用另一种用法,就是配合having来使用,如表数据不变,现在要求在表中,id出现大于一次的id及个数

select id,count(*) as counts from test group by id having count(*)>1;

结果就是:

id   counts

1       2

2       2

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-07-13
select count(*) num from
(select id from stutent where 1=1 group by age)
user
注意的是group by 为子查询
亲,满意采纳哦!
第2个回答  2014-10-24
select count(*) from ****** a left join **** group by a._,a._ a._ ……

想实现你下面的结果 就需要去掉group by

直接写
select count(*) from ****** a left join ****
因为用group by的时候,会按照你写的这些a._,a._ a._ ……字段去统计个数,比如group by a.性别 这样就会按照性别去统计,如果再加个姓名 a.性别,a.姓名 这样就会按照姓名和性别去统计,如果有同名的同性别的这样count 出来的结果 才会大于2本回答被网友采纳
第3个回答  推荐于2017-10-15
你有按条件分组
如果你是想查有多少记录数,就直接
select count(1) from table1 left join table2 on table....

后面不用group by

如果是按照某个条件分组统计,就将你需要分组的列加入到group by中本回答被提问者采纳
第4个回答  2014-10-24
count(*) 是计算个数的结果为48! 你后面group by 接什么都是这一个结果! 你数一数你这个表应该有48条数据!
相似回答