如何计算每个特定

34gzjxbg  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(255)

我有一个包含两个独立字段a和b的数据库。我想知道,对于a的任何给定值,是否有多行具有不同的b值。
我尝试过使用groupby和distinct,但是我做了一些错误的事情,因为我不断得到结果,当我查询a的特定值时,b的所有值都是相同的。我尝试了以下几种变体,包括:

SELECT COUNT(B) FROM ex1 GROUP BY A HAVING COUNT(*) > 1;
SELECT COUNT(DISTINCT B) FROM ex1 GROUP BY A HAVING COUNT(DISTINCT B) > 1;

奇怪的是,最后一个给我的结果是,对于给定的b值,有多个a值,这与我想要的相反。在上一个查询中,我尝试反转a和b,但结果是a只有一个值b。
只有在多个记录中有一个特定的a值,而每个记录的b值都不同的情况下,我如何才能得到这些记录?

bihw5rsg

bihw5rsg1#

试一试:
只有在多个记录中有a的特定值的情况下的记录,每个记录都有不同的b值

SELECT DISTINCT ex1a.A
FROM ex1 ex1a
WHERE 
(SELECT COUNT(ex1b.B) FROM ex1 ex1b WHERE ex1a.A=ex1b.A) 
= (SELECT COUNT(DISTINCT ex1b.B) FROM ex1 ex1b WHERE ex1a.A=ex1b.A) 
AND
(SELECT COUNT(ex1c.B) FROM ex1 ex1c WHERE ex1a.A = ex1c.A) > 1

并且,如果您想包括a和b只有1条(不同)记录的情况,可以删除最后一个select。

yyyllmsg

yyyllmsg2#

这应该起作用:

create table want as
select a,b,count(*)as cnt from(
select a,b,count(*) as num from have
group by a, b)
group by a having cnt > 1;

相关问题