Sql 在ibm db2中使用来自2个不同表的min和count

Sql 在ibm db2中使用来自2个不同表的min和count,sql,count,db2,min,Sql,Count,Db2,Min,我怎样才能证明哪位导师教的科目最少 这是我的语法,但我得到 错误代码42607 预期产出: tut_id subject_taught id2 1 我现在没有可用的DB2,但据我所知,您无法在DB2中嵌套聚合函数: $... min(count(session_code))... 这很简单: WITH Subjects_Taught AS (SELECT tutor_id, COUNT(*) AS subjects_taught

我怎样才能证明哪位导师教的科目最少

这是我的语法,但我得到

错误代码42607

预期产出:

tut_id  subject_taught 
  id2          1

我现在没有可用的DB2,但据我所知,您无法在DB2中嵌套聚合函数:

$... min(count(session_code))...
这很简单:

WITH Subjects_Taught AS (SELECT tutor_id, COUNT(*) AS subjects_taught
                         FROM Class
                         GROUP BY tutor_id)

SELECT tutor_id, subjects_taught
FROM Subjects_Taught
WHERE subjects_taught = (SELECT MIN(subjects_taught)
                         FROM Subjects_Taught)

那么声明中是怎么回事

首先,公共表表达式->

WITH Subjects_Taught AS (SELECT tutor_id, COUNT(*) AS subjects_taught
                         FROM Class
                         GROUP BY tutor_id)
这将在查询视图或临时表中定义查询。当你在一个语句中两次引用相同的信息时(就像我们在这里所做的那样),这些方法对于抽象某些细节非常方便。基本上,最终得到的表如下所示:

id1|2
id2|1
id3 | 2

。。。因此,剩下的唯一一件事就是将我们自己限制在满足最小值的这个表的行中:

WHERE subjects_taught = (SELECT MIN(subjects_taught)
                         FROM Subjects_Taught)

。。。我们再次引用虚拟表,得到最小值,就好像它是一个普通的表。

您不能在同一个查询中使用聚合的聚合。当有导师教授的科目数量相同且最少时,您希望如何处理这种情况?@vkp这是我在查询时收到的错误消息execute@Consider如果存在两个相同的最低值,则应同时显示。是,您所说的是执行sql命令时得到的错误消息
WHERE subjects_taught = (SELECT MIN(subjects_taught)
                         FROM Subjects_Taught)