oraclesql:如何在Oracle中编写以下SQL
有一个表t1:oraclesql:如何在Oracle中编写以下SQL,sql,oracle,select,group-by,count,Sql,Oracle,Select,Group By,Count,有一个表t1: id type 1 a 1 b 2 c 2 a 3 a 3 a 4 a 现在我需要检查id是否只有typea,计数是否为1(单个),也就是说,在上面的数据中只有id 4满足这个条件 SELECT type, COUNT (1) FROM t1 where id = :id GROUP BY type HAVING COUNT (1) = 1; 我使用上面的SQL查询获取数据,然后在代码中使用它。这不是一个好的解决方案,有人能帮我用一
id type
1 a
1 b
2 c
2 a
3 a
3 a
4 a
现在我需要检查id是否只有typea
,计数是否为1(单个),也就是说,在上面的数据中只有id 4满足这个条件
SELECT type, COUNT (1)
FROM t1
where id = :id
GROUP BY type
HAVING COUNT (1) = 1;
我使用上面的SQL查询获取数据,然后在代码中使用它。这不是一个好的解决方案,有人能帮我用一个SQL查询得到正确的结果吗?您想要一个简单的聚合查询,其中包含BY子句,确保只存在一行,并且其类型等于
'a'
SELECT id
FROM t1
GROUP BY id
HAVING COUNT(*) = 1 and SUM(DECODE(type, 'a', 0, 1)) = 0
您需要
id
在groupby
子句中,只需过滤掉类型s和具有子句:
SELECT id
FROM t1
GROUP BY id
HAVING MIN(type) = MAX(type) AND MIN(type) = 'a';
我会根据ID进行分组,并根据两个方面进行筛选:
总数是1
非类型a(使用case语句)的行数为0
选择id
从t1开始
按id分组
计数(*)为1,计数(类型为“a”时为1结尾)=0
我只想做:
SELECT id
FROM t1
GROUP BY id
HAVING COUNT(*) = 1 AND MIN(type) = 'a';
谢谢,我认为这是更好的解决方案
SELECT id
FROM t1
GROUP BY id
HAVING COUNT(*) = 1 AND MIN(type) = 'a';