overmind 2023-08-21 17:04 采纳率: 92.9%
浏览 4
已结题

两个GROUPBY项 不能汇总出所有记录的问题

  • 基础环境如下
sudo -u postgres psql sanguo -c "CREATE TABLE heroes(id serial, name VARCHAR(20),fight int,intelligence int,city VARCHAR(20),nation VARCHAR(20),items VARCHAR(20));"
sudo -u postgres psql sanguo -c  "INSERT INTO heroes(name, fight, intelligence,nation,city,items) VALUES('刘备',60,65,'蜀','涿','双股剑'),('关羽',96,96,'蜀','解良','青龙偃月刀 赤兔马'),('张飞',98,60,'蜀','涿','丈八蛇矛'),('吕布','100','86','董卓','长安','方天画戟'),('马超','97','86','蜀','天水','铁骑尖'),('赵云','97','90','蜀','蓟','龙胆'),('典韦','96','57','魏','陈留','铁戟'),('许褚','96','65','魏','陈留',''),('甘宁','95','84','吴','建邺','双匕首'),('庞德','95','80','魏','天水',''),('黄忠','94','85','蜀','长沙','猛将弓'),('文丑','94','79','袁绍','蓟',''),('太史慈','93','82','吴','建邺',''),('华雄','92','82','董卓','长安',''),('孙策','92','92','吴','建邺','霸王枪'),('颜良','92','80','袁绍','蓟',''),('张辽','92','93','魏','蓟',''),('魏延','91','81','蜀','信阳',''),('夏侯渊','91','85','魏','陈留',''),('孙坚','90','93','吴','建邺',''),('文鸯','90','77','魏','蓟',''),('夏侯惇','90','89','魏','陈留','碎岩'),('周泰','90','77','吴','建邺',''),('曹彰','88','82','魏','许昌',''),('姜维','88','89','蜀','天水',''),('曹操','85','96','魏','陈留','孟德新书 玉玺 铜雀台赋'),('孙权','83','91','吴','建邺',''),('诸葛亮','60','98','蜀','南阳',''),('董卓','60','50','董卓','长安','魔王扑'),('袁绍','60','60','袁绍','长安','王道剑');"
  • 执行如下指令
\c sanguo

SELECT 
    city,
    nation,
    count(*) 
FROM 
    heroes
WHERE 
    fight > 90
GROUP BY
    nation,
    city
ORDER BY
    nation,
    city
;
  • 得到的结果是

img

  • 出生于南阳、隶属于蜀国的诸葛亮并没有被统计进来
  • 这是什么原因
  • 如果想要 修改使得能够统计出完整30名英雄的结果
  • 应该怎么修改?
  • 写回答

2条回答 默认 最新

  • 左安青 2023-08-21 17:10
    关注

    结合chatgpt和个人分析sql语句,
    分析问题出在SELECT语句中的WHERE条件。当前的条件是fight > 90,这将过滤掉战斗力不满足条件的英雄,导致诸葛亮被排除在外。要想统计出完整的30名英雄结果,你需要修改WHERE条件。

    要修改使得能够统计出完整30名英雄的结果,可以将WHERE条件修改为fight >= 0,这样将不会过滤掉任何一个英雄。

    以下是完整的修改后的SQL查询语句:

    
    \c sanguo
    
    SELECT 
        city,
        nation,
        count(*) 
    FROM 
        heroes
    WHERE 
        fight >= 0
    GROUP BY
        nation,
        city
    ORDER BY
        nation,
        city
    ;
    
    
    

    执行以上修改后的查询语句,就能够统计出完整的30名英雄的结果,包括诸葛亮在内。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月29日
  • 已采纳回答 8月21日
  • 创建了问题 8月21日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装