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

PostgreSQL如何查询在指定多个年份均有销售记录的销售员

实现方案

不用写复杂的多表关联或者嵌套查询,用基础的分组聚合就能搞定,核心逻辑是筛选出在3个目标年份都有不重复记录的销售员。

参考SQL语句

假设存储销售记录的表名为sales,存储年份的字段为year,存储销售员名称的字段为salesmen,语句如下:

SELECT salesmen
FROM sales
WHERE year IN (1998, 1999, 2001)
GROUP BY salesmen
HAVING COUNT(DISTINCT year) = 3;

语句说明

  • 首先用WHERE year IN (1998, 1999, 2001)过滤掉所有非目标年份的无效记录,减少后续计算的数据量
  • 按销售员维度分组后,通过COUNT(DISTINCT year)统计每个销售员在目标年份范围内,实际产生过销售记录的去重年份总数——这里必须加DISTINCT,避免同一年同个销售员有多条销售记录时导致计数错误,比如示例数据里1998年销售员a有2条记录,不去重的话计数会虚高
  • 最后用HAVING子句筛选出去重年份数等于3的销售员,就是三个目标年份都有销售记录的结果。

拿给出的示例数据跑这段语句,返回的结果正好是销售员a和b,完全符合预期。如果后续需要调整目标统计年份,只需要修改IN里的年份列表、把HAVING后的等号数值改成目标年份的总数量就行,维护成本很低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:09:23