gpt4 book ai didi

mysql - 最少按不同分组 - SQL

转载 作者:行者123 更新时间:2023-11-29 06:20:03 26 4
gpt4 key购买 nike

好的,我想这个问题的答案在某处,但我找不到...(连我的标题都不好)

简而言之,我想从关联表的一部分中得到最少数量的组


1st,请记住,这已经是 5 个表(+1k 行)与过滤器和分组连接的结果,我将不得不在像香蕉一样强大的产品服务器上运行很多次。 ..

第二,这是一个假的案例,把你描绘成我的问题


经过一些查询,我得到了这个数据结果:

+--------------------+
|id_course|id_teacher|
+--------------------+
| 6 | 1 |
| 6 | 4 |
| 6 | 14 |
| 33 | 1 |
| 33 | 4 |
| 34 | 1 |
| 34 | 4 |
| 34 | 10 |
+--------------------+

如您所见,我有 3 门类(class),最多由 3 位老师教授。我需要参加每门类(class)中的一门,但我想要尽可能少的不同老师(我很害羞...)。

我的第一个查询

应该回答:覆盖每门独特类(class)所需的最少教师人数是多少?

根据此数据,它是 1,因为老师 1 或老师 4 为这 3 个人开设了类(class)。


第二次查询

现在我已经学习了这些类(class),我想参加另外两门类(class),3250,时间表如下:

+--------------------+
|id_course|id_teacher|
+--------------------+
| 32 | 1 |
| 32 | 12 |
| 50 | 12 |
+--------------------+

我的问题是:对于 id_course N,我是否需要再找一位老师?

我想逐门查课,所以“查32门课”,不需要同时查很多

我认为最好的方法是从第一个查询中计算一个内部连接与一个最低等级的教师列表,所以我们的数据只有两个:Teacher(1, 4) .

对于类(class) 32,Teacher2 不做这个,但是 Teacher1 做 Courses(6, 33, 34, 32) 我没有找另一位老师。

对于类(class) 50,唯一的老师是 Teacher12,所以我不会在我选择的老师中找到匹配的,我必须再找一个(所以这些数据总共有两个)


这是一个基础 [SQLFiddle sqlfiddle

最好的问候,布拉格

最佳答案

您想要获得数量最少的 ID_Teachers 的不同计数,然后...获得不同的计数并将结果限制为 1 条记录。

所以也许像...

SELECT count(Distinct ID_Teacher), Group_concat(ID_Teacher) as TeachersIDs
FROM Table
WHERE ID_Course in ('Your List')
ORDER BY count(Distinct ID_Teacher) ASC Limit 1

但是,如果存在平局,这将随机选择...那么您是否要提供选项来选择应该存在平局的教师和类(class)组?这意味着有多种途径可以完成涉及相同数量教师的所有类(class)......例如教师 A、B 和 A、C 完成所有必修课......应该在结果中返回两个记录还是 1 就足够了?

关于mysql - 最少按不同分组 - SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33736317/

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