Sql 结合两种选择
我有下表Sql 结合两种选择,sql,sql-server,dml,Sql,Sql Server,Dml,我有下表 试验 我需要得到以下结果,只得到A和B的NumFact数 预期结果 我编写了以下查询 我怎样才能只选择一个select and get Num?您只需按类型分组并正确过滤即可 SELECT type, COUNT(NumFact) AS Num FROM test WHERE type IN ('A','B') GROUP BY type; 这意味着将结果集分组到列type,并对每个组使用聚合函数COUNT(),但仅当type列值等于“A”或“B”时 这是非常基本的SQL。阅读更多信
试验 我需要得到以下结果,只得到A和B的NumFact数 预期结果 我编写了以下查询
我怎样才能只选择一个select and get Num?您只需按
类型分组并正确过滤即可
SELECT type, COUNT(NumFact) AS Num
FROM test
WHERE type IN ('A','B')
GROUP BY type;
这意味着将结果集分组到列type
,并对每个组使用聚合函数COUNT()
,但仅当type
列值等于“A”或“B”时
这是非常基本的SQL。阅读更多信息。使用分组方式
查询1
查询2
或稍有不同的版本:
SELECT COUNT(NumFact) AS Num, Type
FROM test
GROUP BY Type
HAVING (Type = 'A') OR (Type = 'B')
--或--
拥有(类型='A')或(类型='B')
是一个坏主意为什么呢。。。根据我的经验:输入('A','B')
比输入(type='A')或(type='B')要好
我猜这可能更好的主要原因是,如果要使用动态过滤器,您可以在括号中再加一个SELECT子句。我不认为需要对此OP进行解释,因为他可以理解当他运行SELECT时,SELECT中没有什么复杂的内容
-- select query 1 --
Select (count NumFact )as Num
from test
where type = 'A'
-- select query 2 --
Select (count NumFact )as Num
from test
where type = 'B'
SELECT type, COUNT(NumFact) AS Num
FROM test
WHERE type IN ('A','B')
GROUP BY type;
SELECT COUNT(NumFact) AS Num,
type FROM test
WHERE type IN ('A','B')
GROUP BY type
SELECT COUNT(NumFact) AS Num,
type FROM test
WHERE type='A' OR type='B'
GROUP BY type;
SELECT COUNT(NumFact) AS Num, Type
FROM test
GROUP BY Type
HAVING (Type = 'A') OR (Type = 'B')
select
type,count(numfact) as num
from test
group by type
order by type
select
type,count(numfact) as num
from test
where type in('A','B')
group by type
order by type