按分组后的SQL中的计数

按分组后的SQL中的计数,sql,database,count,group-by,Sql,Database,Count,Group By,我想在分组后计数,而不是总行数 我只想按类别计算 在分组后,我的结果如下 course lecturer comp1111 Jim comp1100 Jim comp1100 Jim infs2321 Jess infs2321 Jess econ1222 Helen 我的计数结果应该是 lecturer count Jim 3 Jess 2 Helen 1 试试这个。这可能有用

我想在
分组后计数,而不是总行数
我只想按类别计算
在
分组后,我的结果如下

course       lecturer
comp1111     Jim
comp1100     Jim
comp1100     Jim
infs2321     Jess
infs2321     Jess
econ1222     Helen
我的计数结果应该是

lecturer    count
Jim          3
Jess         2
Helen        1

试试这个。这可能有用

SELECT LECTURER, COUNT(*) 
FROM 
(SELECT LECTURER, COURSE
FROM TABLE
WHERE 
GROUP BY LECTURER, COURSE )
GROUP BY LECTURER;

我不明白你为什么在分组后要分组。你只需要做一组就可以得到你想要的结果。请看一看这个,看看它的工作现场

CREATE TABLE Table1
    (`course` varchar(8), `lecturer` varchar(5))
;

INSERT INTO Table1
    (`course`, `lecturer`)
VALUES
    ('comp1111', 'Jim'),
    ('comp1100', 'Jim'),
    ('comp1100', 'Jim'),
    ('infs2321', 'Jess'),
    ('infs2321', 'Jess'),
    ('econ1222', 'Helen')
;

select
lecturer, count(*)
from
Table1
group by lecturer desc;

| LECTURER | COUNT(*) |
-----------|----------|--
|      Jim |        3 |
|     Jess |        2 |
|    Helen |        1 |
编辑:

你不需要额外的桌子。要获得计数最大的行,只需执行以下操作

select
lecturer, count(*)
from
Table1
group by lecturer
order by count(*) desc
limit 1;
对于MySQL或

select top 1 
lecturer, count(*)
from
Table1
group by lecturer
order by count(*) desc;
适用于MS SQL Server。在我的第一个答案中,我使用了
groupby讲师DESC
,这与
groupby讲师ORDER BY COUNT(*)DESC相同,因为在MySQL中
groupby
意味着
ORDER BY

如果这不是您想要的,请小心使用
MAX()
函数。举个例子,当你简单地做

select
lecturer, max(whatever)
from
Table1
group by lecturer;
你不一定会拿着最大的东西来吵架

你也可以

select
lecturer, max(whatever), min(whatever)
from
Table1
group by lecturer;
看到了吗?您只获得函数返回的值,而不是属于它的行。有关如何解决此问题的示例,请参考此


我希望我现在没有把你们搞糊涂,这可能比你们想知道的要多,因为上面是专门针对团体的。我认为您真正想要做的是按照您想要的方式对表进行排序,然后只选择一行,如上文所述。

尝试在mysql中使用此命令

============================

select
lecturer, count(*)
from
Course_detail
group by lecturer desc;

哦哦,所以当我按讲师分组后进行计数(*)时,是否自动按不同的讲师计数?是的,您可以得到每个不同讲师的计数。非常感谢。如果我想得到计数最大的一行,那就是“Jim 3”。我不能直接使用max(count(*)。我必须创建另一个表,然后从表1中获取吗?@CherryPeng更新了我的答案以获得详细的答案。很高兴听到这个消息。请随意接受我的答案:)此网站的工作原理。