sql编写问题,统计一列里面所有不同值的记录数

问题描述

sql编写问题,统计一列里面所有不同值的记录数

字段里共包含5种值,“a”,“b”,"c","d","e",请问怎样统计这列字段每种值的记录数?
较为简便的写法是什么?有现成的函数吗?

如表 T 字段 f1,共有6条记录,

              a
                                a
                                b
                                c
                                d
                                e
希望获得结果 count_a, count_b, count_c, count_d, count_e
                    -------------------------------------------------
                                        2            1            1             1            1

解决方案

select count(a) as count_a,count(b) as count_b,count(c) as count_c,count(d) as count_d,count(e) as count_c from 表名 group by 字段名

解决方案二:

SQL Sever

/* 测试数据
WITH T(f1)AS(
    SELECT 'a' UNION ALL
    SELECT 'a' UNION ALL
    SELECT 'b' UNION ALL
    SELECT 'c' UNION ALL
    SELECT 'd' UNION ALL
    SELECT 'e'
) */
SELECT [a] AS count_a,
       [b] AS count_b,
       [c] AS count_c,
       [d] AS count_d,
       [e] AS count_e
  FROM t
 PIVOT (COUNT(f1)
        FOR f1 IN ([a],[b],[c],[d],[e])
       ) p

结果

count_a     count_b     count_c     count_d     count_e
----------- ----------- ----------- ----------- -----------
          2           1           1           1           1

解决方案三:

group by 分组,然后count统计

解决方案四:

一楼正解。

 SELECT COUNT(a) as count_a,
                COUNT(b) as count_b,
                    COUNT(c) as count_c,
                    COUNT(d) as count_d,
                    COUNT(e) as count_c
FROM 表名
GROUP BY  列名

binggo!

时间: 2025-01-21 18:26:54

sql编写问题,统计一列里面所有不同值的记录数的相关文章

SQL在单一表中查询具有重复字段值的记录

SQL在单一表中查询具有重复字段值的记录:主要使用HAVING Count(*)>1方法来实现 SELECT T_User.UserName, T_User.UserID FROM T_User WHERE (((T_User.UserName) In (SELECT [UserName] FROM [T_User] As Tmp GROUP BY [UserName] HAVING Count(*)>1 ))) ORDER BY T_User.UserName;

用SQL语句查询数据库中某一字段下相同值的记录方法

今天接到一任务,有一张学生信息表(Excel表),里面有一万多条记录,现在要把这张表导入到数据库中,并设置学生学号为主键,但是现在这张表中的学生学号有重复的记录,我必须先找出这些重复的记录,然后再进行筛选,经过研究问题终于得到解决.      以上问题实际上就是查询数据库表中某一字段值重复的记录,这里省略如何将Excel表导入到数据库步骤,只讨论用SQL查询数据库中某一字段下相同值的记录方法. 现在假设数据库表名为student,里面有字段Sno(学号),ID(身份证),这里提供两种查询的方法:

请教,sql能不能设置一列,自动统计另一张表每个数据的个数?

问题描述 请教,sql能不能设置一列,自动统计另一张表每个数据的个数? 请教,sql能不能设置一列,自动统计另一张表每个数据的个数? 例如: 表a id(部门),zw(职务),name(姓名) 人力部 经理 张三 人力部 副经理 李四 人力部 副经理 王五 开发部 副经理 柳柳 开发部 副经理 琪琪 表b id(公司),zw(职务),sum(数量) 人力部 经理 1 人力部 副经理 2 要在表b的sum中自动统计每个id(部门)有几个经理,几个副经理. 表a变化,表b就自动跟着变,应该怎么做?

数据库设计规范:SQL编写规范

SQL编写规范 1. 基本SQL编写规范 (1)规则1:SQL中直接使用表名,不使用schema作为前缀,跨schema访问需要创建synonym(数据仓库,CRM数据库不适用). (2)规则2:必须使用绑定变量, 避免常量的直接引用. 说明:频繁的硬解析会影响数据库性能. (3)规则3:避免在where子句中对索引字段施加函数,这样将导致索引失效. 示例: 错误的写法: select  employee_id, first_name  from  employee  where  to_cha

SQL Server中统计对查询有什么影响

简介 SQL Server查询分析器是基于开销的.通常来讲,查询分析器会根据谓词来确定该如何选择高效的查询路线,比如该选择哪个索引.而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建和更新这些信息后保存到数据库中,这也就是所谓的统计信息. 如何查看统计信息 查看SQL Server的统计信息非常简单,使用如下指令: DBCC SHOW_STATISTICS('表名','索引名') 所得到的结果如图1所示. 图1.统计信息 统计信息如何影响查询 下面

SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)

原文:SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)   本文出处:http://www.cnblogs.com/wy123/p/6770258.html    统计信息写过几篇了相关的文章了,感觉还是不过瘾,关于统计信息的问题,最近又踩坑了,该问题虽然不算很常见,但也比较有意思.相对SQL Server 2012,发现在新的SQL Server版本(2014,2016)中都有一些明显的变化,下文将对此

sqlserver-求一个sql的触发器统计数据

问题描述 求一个sql的触发器统计数据 小弟最近在做个小项目,有三张表,部门表,办公室表,人员表,统计表,结构是部门下有多个办公室,每个办公室有自己的成员,我想实现个触发器,统计每个部门的人数,比如男的有多少,女的有多少,然后保存在统计表中,添加和删除用户的时候更新统计表 部门表dpartment:did,dname 办公室表office:oid,did,oname 用户表user:uid,oid,usex,uname 统计表 statistics:sid,did,man,women 解决方案

SQL Server · 特性分析 · 2012列存储索引技术

摘要 MS SQL Server 2012首次引入了列存储索引(Columnstore Index)来加速数据分析(OLAP)和数据仓库(Data Warehouse)场景的查询,它主要是通过将数据按列压缩存储的方式来减少查询对磁盘IOPS开销和CPU开销,最终达到提升查询效率,降低响应时间的目的.当然,列存储索引也不是一把万能的钥匙,在SQL Server 2012版本中它有诸多非常严苛限制条件. 这篇文章会从以下几个方面来介绍列存储索引: 列存储索引所涉及到的基本概念 列存储索引的结构 列存

浅谈SQL Server中统计对于查询的影响分析_MsSql

而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建和更新这些信息后保存到数据库中,这也就是所谓的统计信息. 如何查看统计信息 查看SQL Server的统计信息非常简单,使用如下指令: DBCC SHOW_STATISTICS('表名','索引名') 所得到的结果如图1所示.         图1.统计信息 统计信息如何影响查询     下面我们通过一个简单的例子来看统计信息是如何影响查询分析器.我建立一个测试表,有两个INT值的列,其中id为自增