You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于统计2013年请求groom服务的主人数量的SQL问题咨询

统计2013年请求groom服务的主人数量的正确SQL写法

嘿,我来帮你搞定这个统计问题!先梳理下原SQL里的问题,再给你修正后的正确写法:

前提与原SQL的问题点

首先,你的服务表(暂时我叫它Puppy_Services,因为你没给表名)看起来缺少Owner_ID字段——这可是关联主人表和服务表的核心!如果没有这个字段,咱们没法把服务记录和对应的主人绑定,所以先假设你的服务表实际是有Owner_ID的,不然这个统计没法完成哦。

然后你的原SQL存在几个语法和逻辑问题:

  • 表别名写错了:FROM servided_date p 这里应该写服务表的表名,不是字段名
  • 关联条件语法错误:p.owner_id , o.owner_id 应该是p.Owner_ID = o.Owner_ID,这是两张表关联的必要条件
  • 字段拼写不一致:表字段是servided_date,但你写了year(serviced_date),少了个i,得和表结构保持一致
  • 未做去重处理:如果同一个主人在2013年多次预约groom服务,直接count(owner_ID)会重复统计,得用COUNT(DISTINCT)来统计独立的主人数量

正确的SQL写法(推荐用JOIN语法,更清晰易维护)

SELECT COUNT(DISTINCT o.Owner_ID) AS groom_owner_count
FROM Owner o
JOIN Puppy_Services p ON o.Owner_ID = p.Owner_ID
WHERE p.type_service = 'groom'
  AND YEAR(p.servided_date) = 2013;

如果你习惯用旧的WHERE连接写法(修正你的原代码)

SELECT COUNT(DISTINCT o.Owner_ID) AS groom_owner_count
FROM Owner o, Puppy_Services p
WHERE o.Owner_ID = p.Owner_ID
  AND p.type_service = 'groom'
  AND YEAR(p.servided_date) = 2013;

关键说明

  • COUNT(DISTINCT o.Owner_ID):确保同一个主人不管做了多少次groom服务,都只被统计一次
  • 明确的关联条件o.Owner_ID = p.Owner_ID:把主人表和服务表的记录正确对应起来
  • 统一字段拼写:如果你的服务表实际字段是serviced_date(少了i),记得把SQL里的字段名改成和表一致的
  • 表别名o(对应Owner表)和p(对应服务表)让SQL更简洁好读

内容的提问来源于stack exchange,提问作者Carita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:41:24