gpt4 book ai didi

sql - 分组后的 IN SQL 计数

转载 作者:搜寻专家 更新时间:2023-10-30 22:13:31 24 4
gpt4 key购买 nike

我想在group by之后统计,而不是总行只想按类别数在 group by 之后我的结果是这样的

course       lecturer
comp1111 Jim
comp1100 Jim
comp1100 Jim
infs2321 Jess
infs2321 Jess
econ1222 Helen

我计算后的结果应该是

lecturer    count
Jim 3
Jess 2
Helen 1

最佳答案

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

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 |

编辑:

您不需要额外的 table 。要获得计数最多的行,您可以简单地做

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 服务器。在我的第一个答案中,我有 GROUP BY lector DESC 这与 GROUP BY lector ORDER BY COUNT(*) DESC 相同,因为在 MySQL GROUP BY 表示 ORDER BY

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

select
lecturer, max(whatever)
from
Table1
group by lecturer;

您不一定会获得最大值的行。

你也可以这样做

select
lecturer, max(whatever), min(whatever)
from
Table1
group by lecturer;

看到了吗?您只是获得函数返回的值,而不是属于它的行。有关如何解决此问题的示例,请参阅此 manual entry .

我希望我现在没有把你弄糊涂,这可能比你想知道的要多,因为以上是专门针对团体的。我认为您真正想要做的只是按照您想要的方式对表格进行排序,然后只选择一行,就像上面提到的那样。

关于sql - 分组后的 IN SQL 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19022629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com