Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查找列中每种类型的总计数_Sql - Fatal编程技术网

SQL查找列中每种类型的总计数

SQL查找列中每种类型的总计数,sql,Sql,我正在学习SQL,对于什么应该是一个简单的查询感到困惑。我有一张有以下图案的桌子: Id | Type ------------ 1 | Red 2 | Blue 3 | Blue 4 | Red .. 我想编写一个查询来返回一个表,该表统计每种类型的实例总数,并返回一个具有以下模式的表,例如,如果上面的表中12行出现“蓝色”,16行出现“红色”,则结果将是: Blue | Red ----------- 12 | 16 你可以这样做: S

我正在学习SQL,对于什么应该是一个简单的查询感到困惑。我有一张有以下图案的桌子:

Id |  Type  
------------
1  |  Red   
2  |  Blue  
3  |  Blue  
4  |  Red   
..
我想编写一个查询来返回一个表,该表统计每种类型的实例总数,并返回一个具有以下模式的表,例如,如果上面的表中12行出现“蓝色”,16行出现“红色”,则结果将是:

Blue | Red 
-----------
 12  |  16 

你可以这样做:

SELECT Type, COUNT(*) FROM TABLE GROUP BY Type
如果希望在单独的列中查看类型,可以执行以下操作:

SELECT SUM(CASE WHEN Type = 'Blue' THEN 1 ELSE 0 END) AS Blue, SUM(CASE WHEN Type = 'Red' THEN 1 ELSE 0 END) AS Red FROM TABLE

只需将值放在单独的行中,并使用
分组方式
。这是一个非常好的解决方案,谢谢!我在一个prod表上运行了它,该表有50多列,其中包括少量blob列,并且所有文本列都是nvarhar2数据类型,但是在多列上使用它本身会对查询执行时间产生巨大影响@您能为这类表提供一种以列形式运行按值计数的最佳方法吗?