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

sql HAVING max(count())返回零行

太叔航
2023-03-14
问题内容

我正在尝试使用课程表重叠的教室,我的桌子是:课程:

COURSE_ID    NAME
11           matematika
22           logika
33           himiya
44           sport
55           algoritmika
66           hedva
77           algebra linearit

日程:

ID  COURSE_ID  ID_ROOM  DAY  HOUR
1   11         105      Mon  10am
2   11         105      Wen  10am
3   11         105      Thu  10am
4   22         105      Mon  10am
5   22         205      Wen  10am
6   22         105      Thu  10am
7   33         305      Mon  11am
8   33         105      Mon  10am

课堂:

ID_ROOM  LOCATION  CAPACITY
105      A         20
205      B         10
305      C         30

我的SQL是:

select class_room.ID_ROOM as crid, class_room.LOCATION, schedule.DAY as d, schedule.HOUR as h,  count(courses.COURSE_ID) as count 
  from schedule
  natural join class_room
  natural join courses
  group by crid, d, h
  order by count desc;

我得到:

crid  LOCATION  d   h       count
105   A         Mon 10am    3
105   A         Thu 10am    2
305   C         Mon 11am    1
105   A         Wen 10am    1
205   B         Wen 10am    1

但是我只需要显示count的所有最大值(目前只有1条这样的行)。我试过了

select class_room.ID_ROOM as crid, class_room.LOCATION, schedule.DAY as d, schedule.HOUR as h,  count(courses.COURSE_ID) as count 
  from schedule
  natural join class_room
  natural join courses
  group by crid, d, h
  having max(count)
  order by count desc;

而是返回空表。怎么了?或者,也许是另一种解决方案的建议,以获得我所需要的?


问题答案:

以下将返回与最大计数匹配的所有组

SQL小提琴

select  class_room.ID_ROOM as crid
        , class_room.LOCATION
        , schedule.DAY as d
        , schedule.HOUR as h
        ,  count(courses.COURSE_ID) as count 
from    schedule
        natural join class_room
        natural join courses
group by 
        crid, d, h
having count(*) = (
                    select  max(count)
                    from    (            
                              select  count(courses.COURSE_ID) as count
                              from    schedule
                                      natural join class_room
                                      natural join courses
                              group by 
                                      id_room, day, hour
                            ) maxcount
                    )


 类似资料:
  • 问题内容: 考试分为4个部分,每个部分都有不同数量的问题。我想知道,对于每个学生和每个部分,他们正确回答了多少个问题(响应= 1)。 但是,通过此查询,如果学生在给定的部分中没有正确的问题,则该行将完全不在我的结果集中。我如何确保每位学生总是返回4行,即使一行的“总计”为0也是如此? 这是我的结果集的样子: 感谢您的任何见解! 更新:我试过了 而这完全没有改变结果。还有其他想法吗? 更新2:由于以

  • 问题内容: 我试图计算表中的行数,并认为这是执行此操作的正确方法: 但是计数总是返回。如果我在phpMyAdmin中使用相同的查询,则会得到正确的结果。它位于表格中,因此我也尝试进行测试,但是返回了。 什么是正确的方法? 问题答案: 您必须获取一条记录,它将包含Count()的结果

  • 如果某个特定日期没有记录,我需要上面的查询返回计数0。这似乎没有发生。 我尝试了NVL,解码。发现这个问题是由于分组的子句,但不知道如何解决这个问题。 请帮忙!!

  • 问题内容: 好吧,我刚刚遇到一种奇怪的行为,这是我之前从未见过或未曾注意到的。 我正在使用此查询: …阅读3个项目,但同时我想获取总行数。 问题是… …当我使用count时,查询仅返回一行,但是如果我删除 -我会得到3行。显然,我在这里错过了一些东西。 问题答案: 是的,count是一个聚合运算符,它仅返回一行(没有group by子句) 也许做两个单独的查询?让该行返回数据和总行数是没有意义的,

  • 我正在尝试解码一个Base64编码的字符串,而当使用UTF8编码时,它总是返回nil。我尝试将字符编码更改为几种不同的选项,但无法使其返回与将其放入https://www.base64decode.org/这样的网站时相同的值 我尝试解码的字符串是“qc6msdfm1pizbp0szoqmoq==” 下面是我用来测试的代码

  • 我正在尝试使用以下代码在Swift中将base64字符串解码为图像: 不幸的是,变量decodedData的值为nil 通过代码调试,我验证了变量encodedImageData不是零,是正确的编码图像数据(通过使用在线base64到图像转换器验证)。我的问题背后的原因可能是什么?