SQL - 计算包含两个不同字段的行数

Posted

技术标签:

【中文标题】SQL - 计算包含两个不同字段的行数【英文标题】:SQL - Counting the number of rows that contain two distinct fields 【发布时间】:2012-07-19 14:37:48 【问题描述】:

是否有任何方法可以获取 fieldB 的计数,但仅限于 fieldA 和 fieldB 组合唯一的情况?

例如

fieldA     fieldB
X          A
X          B
Y          C
X          B
Y          A

字段 B 的计数将返回:

A = 2
B = 1
C = 1

我尝试过使用“SELECT DISTINCT fieldA, COUNT(fieldB) AS count FROM table GROUP BY fieldB”。这似乎返回了 fieldB 中所有值的计数,而不仅仅是具有唯一 fieldA 的值。

我希望我正在尝试做的事情是有意义的,我发现很难用语言表达。我想用 SQL 做的事情可能吗?

谢谢

【问题讨论】:

【参考方案1】:

应该是

SELECT fieldB, COUNT(DISTINCT  fieldA, fieldB) AS count 
FROM table 
GROUP BY fieldB;

【讨论】:

感谢所有快速回答,这只是我尝试过的第一个,并且看起来效果很好。 - 谢谢【参考方案2】:
SELECT   fieldA, COUNT(fieldB) AS count from
(SELECT DISTINCT fieldA, fieldB FROM table)a
FROM a GROUP BY a.fieldB

【讨论】:

【参考方案3】:

我想这会让你到达那里

Declare @mytbl table (fieldA char(1), fieldB char(1))
insert into @mytbl
select 'X','A'
union all select 'X','B'
union all select 'Y','C'
union all select 'X','B'
union all select 'Y','A'

select COUNT(*), LEFT(myfields,1)
from 
(
select distinct fieldb + fielda as myfields
from @mytbl
group by fieldb + fielda
) a
group by LEFT(myfields,1)

返回

2 安 1乙 1 C

【讨论】:

【参考方案4】:
DECLARE @mytb table
(
fieldA varchar(10),
fieldB varchar(10)
);

INSERT into @mytb values('X','A');
INSERT into @mytb values('X','B');
INSERT into @mytb values('Y','C');
INSERT into @mytb values('X','B');
INSERT into @mytb values('Y','A');

SELECT fieldB,count(DISTINCT fieldA+fieldB) as count
from @mytb
group BY fieldB;


   fieldB     count
---------- -----------
    A          2
    B          1
    C          1

【讨论】:

@RaphaëlAlthaus 抱歉,但它为 A 返回 2。

以上是关于SQL - 计算包含两个不同字段的行数的主要内容,如果未能解决你的问题,请参考以下文章

SQL如何查询出某一列中不同值出现的次数?

Mongoose 中字段的每个不同值的行数

SQL 计算表中的行数

计算 SQL 中值转换之间的行数

计算Sql中的行数

如何查找和计算两个不同数据帧之间的重复行数? [关闭]