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

如何统计年度内已投放种苗的水库数量(SQL求助)

统计当年有种苗投放记录的水库数量的正确SQL方法

核心需求解析

你需要的是2022年存在种苗投放记录的水库总数,而非各水库的投放次数,因此重点是获取唯一的水库编码集合后统计数量。


方法一:最简写法(使用COUNT(DISTINCT))

直接通过DISTINCT关键字对水库编码去重,再统计总数:

SELECT COUNT(DISTINCT reservoir_code) AS stocked_reservoir_count
FROM reservoir_stocking
WHERE stock_date BETWEEN '2022-01-01' AND '2022-12-31';

这个语句会先筛选2022年的所有投放记录,对reservoir_code去重后统计数量,直接得到目标结果。


方法二:子查询分组统计

如果偏好子查询的方式,修正你之前的错误写法即可:

SELECT COUNT(*) AS stocked_reservoir_count
FROM (
    -- 子查询获取2022年有投放记录的所有唯一水库编码
    SELECT reservoir_code
    FROM reservoir_stocking
    WHERE stock_date BETWEEN '2022-01-01' AND '2022-12-31'
    GROUP BY reservoir_code
) AS unique_reservoirs;

子查询通过分组得到每个有投放记录的水库编码(仅出现一次),外层查询统计该结果集的行数,即为目标数量。


你之前语句的错误点

你第二次尝试的语句存在三个问题:

  1. GROUP BY reservoir_stocking 语法错误:GROUP BY 后应跟字段名(如reservoir_code),而非表名;
  2. HAVING count > 1 逻辑错误:会过滤掉仅投放过一次的水库,不符合统计所有有记录水库的需求;
  3. 外层COUNT(id)无意义:子查询中未返回id字段,应改为COUNT(*)统计子查询结果的行数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 21:43:16