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

如何用SQL统计不同玩具持有量对应的雌性狗狗数量

现有查询问题说明

你当前的查询存在两处逻辑缺陷,无法支撑后续聚合统计:

  1. 关联条件错误:WHERE子句中用toys.toy_id和雌性狗ID匹配,实际应该匹配toys.dog_id
  2. 直接查询toy表无法覆盖没有玩具的雌性狗(示例中id=3的母狗),必须从雌性狗表出发做左关联才能拿到0玩具的样本。

正确实现代码

SELECT 
  num_toys,
  COUNT(dog_id) AS num_dogs
FROM (
  -- 先统计每只雌性狗的玩具持有数量
  SELECT 
    d.id AS dog_id,
    COUNT(t.toy_id) AS num_toys
  FROM dog d
  LEFT JOIN toy t ON d.id = t.dog_id
  WHERE d.gender = 2
  GROUP BY d.id
) AS dog_toy_cnt
-- 按玩具持有量分组统计对应狗的数量
GROUP BY num_toys
ORDER BY num_toys;

逻辑说明

  • 内层子查询先筛选所有雌性狗,左关联toy表,按狗ID分组统计每只狗的玩具数,没有玩具的狗统计结果自动为0
  • 外层查询基于内层的单狗玩具数结果,按玩具数分组统计对应的狗的数量,输出结果和你给出的预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:45:00