sql中怎么统计一个字段的数量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中怎么统计一个字段的数量相关的知识,希望对你有一定的参考价值。

参考技术A sqlserver为例
创建表及插入数据
create table 姓名表(id int,u_name varchar(10),subject varchar(10))create table 科目表(id int,s_name varchar(10))insert into 姓名表 values (1,'张三','英语')insert into 姓名表 values (2,'李四','德语')insert into 姓名表 values (3,'王五','日语')insert into 姓名表 values (4,'小明','英语')insert into 姓名表 values (5,'小狗','法语')insert into 科目表 values (1,'英语')insert into 科目表 values(2,'德语')insert into 科目表 values(3,'日语')insert into 科目表 values(4,'法语')
然后需要创建一个视图
create view v_subjectasselect a.s_name,SUM(case when a.s_name=b.subject then 1 else 0 end) countsfrom 科目表 a left join 姓名表 b on a.s_name=b.subjectgroup by a.s_name执行语句
declare @sql varchar(4000)set @sql = 'select sum(counts) as 合计'select @sql = @sql + ',sum(isnull(case [s_name] when '''+[s_name]+''' then [counts] end,0)) as ['+[s_name]+']'from (select distinct [s_name] from v_subject) as aselect @sql = @sql+' from [v_subject]'exec (@sql)结果截图

你结果里为什么会少呢?
这个主要是动态显示才这么复杂,比如你在科目表里再加个阿拉伯语,用这个也没问题,否则用case when的写法会比较有局限性

以上是关于sql中怎么统计一个字段的数量的主要内容,如果未能解决你的问题,请参考以下文章

SQL统计本日的更新数量

求Oracle分组统计数量的sql怎么写,需求如下

sql语句统计数量,统计一个字段的值的数量

sql语句统计数量 统计一个字段出现的数量

统计mysql数据库中数据表/字段等数量的sql

SQL一次性查询一个字段不同条件下的统计结果(另一张表的统计数量)