不吃土豆泥 2025-06-06 11:54 采纳率: 83.3%
浏览 8

牛客网SQL面试真题161

各位佬们,为什么第六行有些列不在group by子句中呀?我看其他回答都是按video-id分组就行了,我的为什么不对

程序异常退出, 请检查代码"是否有数组越界等异常"或者"是否有语法错误"
SQL_ERROR_INFO: "Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'log.end_time' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by"

img

img

  • 写回答

5条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2025-06-06 12:02
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题的原因是因为SQL语句中使用了ONLY_FULL_GROUP_BY模式,该模式要求SELECT语句中的每个字段要么在GROUP BY子句中,要么被聚合函数处理。如果不符合这个规则,就会报错。 在这个具体的案例中,第六行的end_time列没有被包含在GROUP BY子句中,也没有被聚合函数处理,因此导致了错误。 解决办法有两种:
    1. 将end_time列添加到GROUP BY子句中
    2. 使用聚合函数处理end_time列 示例代码:
    SELECT video_id,
           COUNT(user_id) AS num_users,
           SUM(view_time) AS total_view_time,
           AVG(view_time) AS avg_view_time,
           MAX(view_time) AS max_view_time,
           MIN(view_time) AS min_view_time,
           MAX(end_time) AS last_view_time
      FROM log
     GROUP BY video_id;
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月6日