首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有group by和having子句的SQL

带有group by和having子句的SQL
EN

Stack Overflow用户
提问于 2015-06-14 03:04:53
回答 3查看 68关注 0票数 0

我有一张A桌

代码语言:javascript
运行
复制
ID   SALN  INDICATOR
  1    100    A
  2    100    B
  3    200    A
  4    200    C
  5    100    c
  6    300    B
  7    200    D

在按SALN分组之后,我需要从表A中提取SALN,并且该组仅具有指标A、B、C

代码语言:javascript
运行
复制
SALN
100

请让我知道这个的SQL

EN

回答 3

Stack Overflow用户

发布于 2015-06-14 03:12:04

代码语言:javascript
运行
复制
select saln
from A
where indicator in('A','B','C')
group by saln
having sum(indicator) = 100
票数 1
EN

Stack Overflow用户

发布于 2015-06-14 03:08:35

代码语言:javascript
运行
复制
select saln
from your_table
group by saln
having sum(indicator not in ('A','B','C')) = 0

如果您还需要检查SALN的A、B和C是否存在,则添加

代码语言:javascript
运行
复制
and sum(indicator  = 'A') > 0
and sum(indicator  = 'B') > 0
and sum(indicator  = 'C') > 0

添加到查询的末尾。

票数 0
EN

Stack Overflow用户

发布于 2015-06-14 03:19:35

如果你想要这三个值,你可以这样做:

代码语言:javascript
运行
复制
select saln
from A
where indicator in ('A', 'B', 'C')
group by saln
having count(*) = 3;

如果可以有重复项,则使用:

代码语言:javascript
运行
复制
having count(distinct indicator) = 3

如果您想要A、B和C,而不需要其他值,那么一种方法是:

代码语言:javascript
运行
复制
select saln
from A
group by saln
having count(distinct case when indicator in ('A', 'B', 'C') then indicator end) = 3;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30822460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档