SQL count和case when配合统计给定条件下不重复的记录数

Iamlaosong文

1、我们知道,SQL语句中用count函数统计记录数量,配合distinct关键字可以统计非重复的记录数量。例如:

select count(*), count(city_name), count(distinct city_name) from tb_county 

查询结果是:

2534  2534  363

增加查询条件可以查询不同条件下记录的数量,例如:

select count(*), count(city_name), count(distinct city_name)from tb_county where xs_code like '23%'or xs_code like '24%'

查询结果是:

85  85  16

2、如果我们需要统计总记录数量和某种条件下的数量,可以用sum函数和case when语句配合,例如:

select count(*),sum(casewhen xs_code like '23%' or xs_code like '24%' then1else0end)from tb_county 

查询结果是:

2534  85

3、如果我们需要统计总记录数量和某种条件下非重复的记录数量,用上面的sum函数就不行了。这时我们可以用count函数和case when语句配合,满足条件取字段值,否则为空,因为count函数是不统计空值的,所以可以统计该条件下的记录数量(和上面的sum函数功能一样),如果再配合distinct关键字,就可以统计该条件下非重复的记录数量了。例如:

select count(*),count(city_name),count(distinct city_name),count(casewhen xs_code like '23%' or xs_code like '24%' thencity_nameelsenullend),count(distinct casewhen xs_code like '23%' or xs_code like '24%' thencity_nameelsenullend)from tb_county 

查询结果是:

2534  2534  363  85  16

这个功能在统计中很有用,尤其是我们需要统计去重复的总量和分量的时候。

上面语句中的else还可以不写,因为默认情况下不写就是空值。即:

select count(*),count(city_name),count(distinct city_name),count(casewhen xs_code like '23%' or xs_code like '24%' thencity_nameend),count(distinct casewhen xs_code like '23%' or xs_code like '24%' thencity_nameend)from tb_county

 转发:https://blog.csdn.net/iamlaosong/article/details/73930674

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(6):javascript简介

我们需要思考以下六个问题: 1、javaScript是什么? 2、javaScript的用途是什么? 3、javaScript和ECMAScript的关系是什么? 4、javaScript由哪几部分组成? 5、javaScript的执行原理是怎样的? 6、在页面…

提高系统性能

1.Cache缓存 对象有生命周期,有容量限制,适合保存有状态属性的对象。 有状态的session bean运行在EJB容器的Cache中 2.Pool池 对象池,实现对象的大量并行访问 无状态的session bean运行在EJB容器的Pool中。转载于:https://www.cnblogs.com/cx…

2019 徐州icpc网络赛 E. XKC's basketball team

题库链接: https://nanti.jisuanke.com/t/41387 题目大意 给定n个数,与一个数m,求ai右边最后一个至少比ai大m的数与这个数之间有多少个数 思路 对于每一个数,利用二分的方法求他右边大于等于aim的数的最后一个值。 关键在于怎么二…

Hive中COUNT的高级用法(条件过滤等)

在HIVE中,除了COUNT(*)外,COUNT还可以有很多高级用法。 SELECTtype, count(*), count(DISTINCT u), count(CASE WHEN plat1 THEN u ELSE NULL END), count(DISTINCT CASE WHEN plat1 THEN u ELSE NULL END), count(CASE WHEN (type2 OR type6) THEN u E…

前端学习(7):web的三大技术

HTML(5) 是一门标记型语言,主要由一些具备特殊含义的标签构成(建筑物结构) 所谓HTML是“超文本标记语言”的英文缩写。我们上网所看到网页,多数都是由HTML写成的。“超文本”是指页面内可以包含图片、链接,甚至音乐、…

SQL 关键字

Table B-1 列出了所由在 SQL 标准和 PostgreSQL 7.2 里是关键字的记号. 你可以在 Section 1.1.1 里找到 相关的背景信息. SQL 里有保留字(保留)和 非保留字之分.根据标准, 保留字是那些真正的关键字;我们决不能用它们…

scala的foreach和for

一句印象深刻的话,Alan Kay(Smalltalk发明者)说得一句话:“I’m not against types, but I dont know of any typesystems that arent a complete pain, so I still like dynamic typing”。 并不是静态类型不好,只是静…

Fedora7 安装完全过程

操作系统课要用Fedora7 安装配置真是一把辛酸泪呀..... 首先是找镜像文件(这个就找了好久.....): https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/7/Fedora/x86_64/iso/ 下载下来(很久)之后&a…

前端学习(8):HTML的基本属性和结构

一、HTML文档结构 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <title>css样式优先级</title> </head> <body> </body> </html> <!DOCTYPE html>声明为HTML5文…

Scala:Function1、Function2

Function1 带一个参数的方法&#xff0c;声明时&#xff0c;它需要两个泛型参数&#xff0c;第一个是传入的数据类型&#xff0c;第二个表示返回的数据类型&#xff0c;Function1是 trait &#xff0c;它有一个apply方法&#xff0c;用来对输入参数进行处理了&#xff0c;使用…

如何更sql sever数据库表的所有者

dbo不是表caseTable的所有者,就无法在查询分析器里执行各种sql语句,提示:服务器: 消息 208&#xff0c;级别 16&#xff0c;状态 1&#xff0c;行 1对象名 caseTable 无效。 表一般默认的所有者是dbo,现在有几个表不是的,所以无法用sa来连接,请问怎么改回为dbo呢? EXEC sp_c…

借助云开发轻松实现后台数据批量导出丨实战

小程序导出数据到excel表&#xff0c;借助云开发后台实现excel数据的保存 我们在开发小程序的过程中&#xff0c;可能会有这样的需求&#xff1a;如何将云数据库里的数据批量导出到excel表里&#xff1f; 这个需求可以用强大的云开发轻松实现&#xff01; 这里需要用到云函数&a…

Storm的ack机制在项目应用中的坑

正在学习storm的大兄弟们&#xff0c;我又来传道授业解惑了&#xff0c;是不是觉得自己会用ack了。好吧&#xff0c;那就让我开始啪啪打你们脸吧。 先说一下ACK机制&#xff1a; 为了保证数据能正确的被处理, 对于spout产生的每一个tuple, storm都会进行跟踪。 这里面涉及到ac…

云开发数据库VS传统数据库丨云开发101

云开发数据库与传统数据库的不同 在小程序云开发中&#xff0c;最核心的便是三大组件&#xff1a;数据库、云存储和云函数&#xff0c;从今天开始&#xff0c;我们将开始隔日更的专栏文章&#xff0c;云开发101&#xff0c;在第一周&#xff0c;我们将从最最核心的数据库开始说…

前端学习(10):HTML语义化

我理解的HTML语义化 经过查看别人博文中的一些描述&#xff0c;我将HTML的语义化总结为&#xff1a; 用最恰当的标签来标记内容。 该如何理解呢&#xff1f;比如需要加入一个标题&#xff0c;这个标题的字体比正文的要大写&#xff0c;还要加粗。能够实现这种效果的方法有很多…

大尾端 小尾端

提到体系结构时&#xff0c;经常遇到大小尾端的概念&#xff0c;这里做个总结。 big endian&#xff1a;大尾端&#xff0c;也称大端&#xff08;高位&#xff09;优先存储。little endian&#xff1a;小尾端&#xff0c;也称小端&#xff08;低位&#xff09;优先存储。如下00…

Storm的BaseBasicBolt源码解析ack机制

我们在学习ack机制的时候&#xff0c;我们知道Storm的Bolt有BaseBasicBolt和BaseRichBolt。 在BaseBasicBolt中&#xff0c;BasicOutputCollector在emit数据的时候&#xff0c;会自动和输入的tuple相关联&#xff0c;而在execute方法结束的时候那个输入tuple会被自动ack。 在使…

博客中gitalk最新评论的获取 github api使用

博客中&#xff0c;对于网友的评论以及每篇文章的评论数还是很重要的。但是基于静态的页面想要存储动态的评论数据是比较难的&#xff0c;一般博客主题中都内置了评论插件&#xff0c;但是博客主题中对于最新评论的支持显示还是很少的&#xff0c;至少目前我是没怎么发现。博客…

前端学习(11):标题和段落

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>标题和段落</title> </head> <body><h1>我是歌谣</h1><h2>我是歌谣</h2><h3>我是歌谣</h3>&l…

Kafka文件存储机制

Kafka是什么 Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、分区的、多副本的、多订阅者&#xff0c;基于zookeeper协调的分布式日志系统(也可以当做MQ系统)&#xff0c;常见可以用于web/nginx日志、访问日志&#xff0c;消息服务等等&#xff0c;Linkedin于2010年贡…