当前位置: 首页 > 面试题库 >

按不在选择中的字段分组

袁翰池
2023-03-14
问题内容

我想查找一位讲师在特定年份教过多少个模块,并想要选择该讲师的姓名和该讲师的模块数。

问题在于,因为我正在选择Name,并且必须按名称对其进行分组才能使其正常工作。但是,如果有两个讲师姓名相同,该怎么办?然后,sql将使它们合而为一,这将是错误的输出。

因此,我真正想做的是选择,name但选择group by id,而sql不允许我这样做。有办法解决吗?

下表是:

Lecturer(lecturerID, lecturerName)
Teaches(lecturerID, moduleID, year)

到目前为止,这是我的查询:

SELECT l.lecturerName, COUNT(moduleID) AS NumOfModules
FROM Lecturer l , Teaches t
WHERE l.lecturerID = t.lecturerID
AND year = 2011
GROUP BY l.lecturerName --I want lectureID here, but it doesn't run if I do that

问题答案:
SELECT a.lecturerName, b.NumOfModules
FROM Lecturer a,(
SELECT l.lecturerID, COUNT(moduleID) AS NumOfModules
    FROM Lecturer l , Teaches t
    WHERE l.lecturerID = t.lecturerID
    AND year = 2011
    GROUP BY l.lecturerID) b
WHERE a.lecturerID = b.lecturerID


 类似资料:
  • 问题内容: 如何使用月/年从表中获取记录?我有一张这样的桌子: 是项目的截止日期,我想要对应于月份/年份的记录,而不是完整的日期,我的意思是特定月份的记录。 我该如何在mysql中做到这一点? 问题答案: 只需使用MONTH()和YEAR()即可:

  • 问题内容: 这就是我想要做的。假设我有这张桌子t: 对于每个ID,我想选择包含最小record_date的行。所以我会得到: 我看到的唯一解决方案是假定所有record_date条目都是不同的,但在我的数据中并非如此。使用带有两个条件的子查询和内部联接将为我提供某些ID的重复行,这是我不想要的: 问题答案: 怎么样: 这将获取每个ID的最短日期,然后基于这些值获取值。唯一的重复项是同一ID的最小r

  • 我有ES索引,其中包含以下格式的文档,这些文档使用Fluentd解析器从日志中解析,并在ES中索引。记录格式: {"id":"id1","field 1":"f1_val","消息":"XXXX","时间":"XXXX"} {"id":"id1","field 2":"f2_val","消息":"XXXX","时间":"XXXX"} {"id":"id1","field 3":"f3_val","

  • 问题内容: 据说如果使用group by子句,则select列列表中必须存在group by列名,但是上面的查询不需要选择sourceobjectid。 问题答案: 结果 不是 遇到的第一行。MySQL非常清楚所谓的“隐藏列”的使用。引用文档: MySQL扩展了GROUP BY的使用,以便选择列表可以引用未在GROUP BY子句中命名的非聚合列。这意味着前面的查询在MySQL中是合法的。您可以使用

  • 我正在尝试从一个select表单中获取一个时间值。我在代码中看不到任何错误,尝试更改所有类名和变量,但值仍然没有被get select。(提交表单后我看不到所选的值) 代码添加如下:

  • 这是我的主页,在那里我选择了一个选项字段。 opt1.php: 这是我的javascript,在这里我从上面的select获得值,并传递给opt2.php 这是我的opt2.php页面,用于显示sub select。 实际上,这并没有产生预期的结果。 有没有逻辑上或处理上的错误?