IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> LintCode 1984 · 统计不同教师 id 的数量(count 函数用法) -> 正文阅读

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

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()函数

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:21:59  更:2021-12-15 18:22:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:22:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码