ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LintCode 1984 · 统计不同教师 id 的数量(count 函数用法)

2021-12-15 00:00:48  阅读:244  来源: 互联网

标签:count 1984 LintCode id courses NULL teacher 统计


LintCode 1984 · 统计不同教师 id 的数量(count 函数用法)


题目地址:LintCode 1984 · 统计不同教师 id 的数量

题目描述

请编写 SQL 语句,统计课程表 courses 中不同的教师 id teacher_id 的数量,最后返回统计值,结果列名显示为 teacher_count 。

表定义: courses (课程表)

列名类型注释
idint主键
namevarchar课程名称
student_countint学生总数
created_atdate开课时间
teacher_idint讲师 ID
  • teacher_id 为空,默认该 teacher_id 不存在,则在统计时不计入
  • 返回统计结果的列名需要更改
  • 如果统计不到数据,则返回 0

样例

样例一:
表内容:courses

idnamestudent_countcreated_atteacher_id
1Advanced Algorithms8802020/6/14
2System Design13502020/7/183
3Django7802020/2/293
4Web3402020/4/224
5Big Data7002020/9/111
6Artificial Intelligence16602018/5/133
7Java P6+7802019/1/193
8Data Analysis5002019/7/121
9Object Oriented Design3002020/8/84
10Dynamic Programming20002018/8/181

在运行你的 SQL 语句之后,表应返回:

teacher_count
3

样例二:
表内容 : courses

idnamestudent_countcreated_atteacher_id
1Advanced Algorithms8802020/6/1
2System Design13502020/7/18
9Object Oriented Design3002020/8/8
10Dynamic Programming20002018/8/18

在运行你的 SQL 语句之后,表应返回:

teacher_count
0

因为样例二中 teacher_id 均为空,所以统计结果为 0

解题思路

在看到样例一时,第一时间想到使用 distinct 关键字进行去重,于是SQL如下

SELECT COUNT(*) AS teacher_count 
FROM (SELECT DISTINCT teacher_id FROM courses) t;

就当我觉得轻轻松松点击提交时候,提示答案不对~~
然后我才注意到这句话:teacher_id 为空,默认该 teacher_id 不存在,则在统计时不计入
修改 SQL 如下:

SELECT COUNT(*) AS teacher_count 
FROM (SELECT DISTINCT teacher_id FROM courses) t
WHERE teacher_id IS NOT NULL;

进行提交,答案通过

使用 count 函数

当我查看题解时,发现下面这条 SQL

SELECT COUNT(DISTINCT(teacher_id)) AS teacher_count 
FROM courses ;

看了答案以后,还以为 DISTINCT 关键字还有忽略 NULL 的作用
在这里插入图片描述
通过 count(*) 和 count(teacher_id) 对比发现 count(列名) 的方式会忽略 NULL 值

在面向百度编程后,得知 count 函数用法如下:

count 函数用法如下:

  • COUNT(*):包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录
  • COUNT(1):忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,在统计结果的时候,不会忽略列值为NULL的记录
  • COUNT(列名):只包括列名指定列,返回指定列的记录数,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。
  • COUNT(DINTINCT 列名):只包括列名指定列,返回指定列的不同值的记录数,在统计结果的时候,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。

文章出处:关于mysql中的count()函数

标签:count,1984,LintCode,id,courses,NULL,teacher,统计
来源: https://blog.csdn.net/m0_55433493/article/details/121942104

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有