前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SQL聚合函数 COUNT

SQL聚合函数 COUNT

作者头像
用户7741497
发布于 2022-03-27 04:10:06
发布于 2022-03-27 04:10:06
3.9K00
代码可运行
举报
文章被收录于专栏:hml_知识记录hml_知识记录
运行总次数:0
代码可运行

SQL聚合函数 COUNT

返回表或指定列中的行数的聚合函数。

大纲

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
COUNT(*)

COUNT([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • * - 指定应计算所有行以返回指定表中的总行数。 COUNT(*)不接受其他参数,不能与ALLDISTINCT关键字一起使用。 COUNT(*)不接受表达式参数,也不使用任何特定列的信息。 COUNT(*)返回指定表或视图中的行数,但不消除重复项。 它分别计数每一行,包括包含NULL值的行。
  • ALL - 可选-指定COUNT返回表达式中所有值的计数。 如果没有指定关键字,这是默认值。
  • DISTINCT - 可选-一个DISTINCT子句,指定COUNT返回表达式的不同(唯一)值的计数。 不能与流字段一起使用。 DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个列名,也可以是用逗号分隔的列名列表。
  • expression - 任何有效的表达式。 通常是包含要计算的数据值的列的名称。
  • %FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

COUNT返回BIGINT数据类型。

描述

COUNT聚合函数有两种形式:

  • COUNT(expression)以整数形式返回表达式中值的数目的计数。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。 COUNT(表达式)不计算NULL值。 它可以选择计数或不计数重复的字段值。 COUNT总是返回数据类型BIGINT, xDBC长度为8,精度为19,刻度为0
  • COUNT(*)以整数形式返回表中行数的计数。 COUNT(*)计数所有行,无论是否存在重复的字段值或NULL值。

COUNT可以在引用表或视图的SELECT查询或子查询中使用。 COUNT可以在SELECT列表或HAVING子句中与普通字段值一起出现。

COUNT不能用于WHERE子句。 COUNT不能在JOINON子句中使用,除非SELECT是子查询。

与所有聚合函数一样,COUNT(expression)可以接受一个可选的DISTINCT子句。 DISTINCT子句只计算那些具有不同(唯一)值的列。 什么是一个不同的值取决于字段的排序; 当字段具有默认的排序规则%SQLUPPER时,字母大小写不同的值将不作为不同的值计算。 要将每个字母大小写变量作为一个不同的值进行计数,请使用count (distinct (%EXACT(field)))COUNT DISTINCT不将NULL视为一个不同的值。 COUNT(DISTINCT BY(col2) col1)计数不同的col2值的col1值; 但是,不同的col2值可以包含一个NULL作为不同的值。

ALL关键字统计所有非null值,包括所有重复值。 如果没有指定关键字,ALL是默认行为。

没有行返回

如果没有选择行,COUNT返回0NULL,这取决于查询:

  • 如果除了提供给聚合函数的字段之外,选择列表不包含对FROM子句表中的字段的任何引用,那么COUNT返回0。 只有COUNT聚合函数返回0; 其他聚合函数返回NULL。 该查询返回%ROWCOUNT1。 如下示例所示:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ClassMethod Count()
{
    s myquery = 3
    s myquery(1) = "SELECT COUNT(*) AS Recs,COUNT(Name) AS People,"
    s myquery(2) = "AVG(Age) AS AvgAge,MAX(Age) AS MaxAge,CURRENT_TIMESTAMP AS Now"
    s myquery(3) = " FROM Sample.Employee WHERE Name %STARTSWITH 'ZZZ'"
    s tStatement = ##class(%SQL.Statement).%New()
    s qStatus = tStatement.%Prepare(.myquery)
    if qStatus'=1 {
        w "%Prepare failed:" 
        d $System.Status.DisplayError(qStatus) 
        q
    }
    s rset = tStatement.%Execute()
    d rset.%Display()
    w !,"Rowcount:",rset.%ROWCOUNT
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DHC-APP> d ##class(PHA.TEST.SQLCommand).Count()
Recs    People  AvgAge  MaxAge  Now
0       0                       2021-12-20 20:58:17
 
1 Rows(s) Affected
Rowcount:1
  • 如果select-list包含对FROM子句表中某个字段的任何直接引用,或者如果指定了TOP 0,那么COUNT返回NULL。 该查询返回%ROWCOUNT0。 以下示例不返回COUNT值,因为%ROWCOUNT值为0:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ClassMethod Count1()
{
    s myquery = 2
    s myquery(1) = "SELECT COUNT(*) AS Recs,COUNT(Name) AS People,$LENGTH(Name) AS NameLen"
    s myquery(2) = " FROM Sample.Employee WHERE Name %STARTSWITH 'ZZZ'"
    s tStatement = ##class(%SQL.Statement).%New()
    s qStatus = tStatement.%Prepare(.myquery)
    if qStatus'=1 {
        w "%Prepare failed:" 
        d $System.Status.DisplayError(qStatus) 
        q
    }
    s rset = tStatement.%Execute()
    d rset.%Display()
    w !,"Rowcount:",rset.%ROWCOUNT
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DHC-APP> d ##class(PHA.TEST.SQLCommand).Count1()
Recs    People  NameLen
 
0 Rows(s) Affected
Rowcount:0
  • 如果没有指定表,COUNT(*)返回1。 该查询返回%ROWCOUNT为1。 如下示例所示:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ClassMethod Count2()
{
    s myquery = "SELECT COUNT(*) AS Recs"
    s tStatement = ##class(%SQL.Statement).%New()
    s qStatus = tStatement.%Prepare(myquery)
    if qStatus'=1 {
        w "%Prepare failed:" 
        d $System.Status.DisplayError(qStatus) 
        q
    }
    s rset = tStatement.%Execute()
    d rset.%Display()
    w !,"Rowcount:",rset.%ROWCOUNT
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DHC-APP> d ##class(PHA.TEST.SQLCommand).Count2()
Recs
1
 
1 Rows(s) Affected
Rowcount:1

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
ggfittext | 这样绘制文本不要太简单了...
其实这个问题在需要有文本标注的图形中经常遇到,在文本数量较多且图形布局较为拥挤时,大部分制作者选择使用图片处理工具如AI等,进行单独的文本添加。
DataCharm
2024/05/11
1970
ggfittext | 这样绘制文本不要太简单了...
89-R可视化21-利用aplot拼图实现类似热图注释柱效果
这其实就是pheatmap 画的非常简单的一张图。通过源代码我们可以发现它其实也是借助了grid 包操作。
北野茶缸子
2022/02/08
1K0
89-R可视化21-利用aplot拼图实现类似热图注释柱效果
87-R可视化19-利用其他图层映射自由的控制背景的颜色
有的小朋友可能会说,这不就是个背景吗?在[[57-R可视化6-ggplot2三部曲最终之进阶为菜鸟]] 中我也提到过主题中的panel.background 参数,比如下图:
北野茶缸子
2022/02/08
5010
87-R可视化19-利用其他图层映射自由的控制背景的颜色
跟着Nature学作图:R语言ggplot2热图
https://www.nature.com/articles/s41586-022-05275-y
用户7010445
2023/01/06
7280
跟着Nature学作图:R语言ggplot2热图
R语言之可视化(20)之geom_label()和geom_text()
Geom_text()将文本直接添加到绘图中。 geom_label()在文本后面绘制一个矩形,使其更易于阅读。
用户1359560
2019/02/22
39.2K1
R语言之可视化(20)之geom_label()和geom_text()
用ggplot2画了一个我也叫不上名的炫酷图表
今日心血来潮,看到一幅制作精良的图表,就想使用ggplot2代码实现,虽然不知道该怎么称呼这个图表,但是能顺利做出来也是很有成就感的! 加载数据包 library("ggplot2") library("grid") library("showtext") library("Cairo") font.add("myfont","msyh.ttc") 构造图形数据源 mydata<-data.frame( id=1:13, class=rep_len(1:4, length=13), Label=c("Eve
数据小磨坊
2018/04/11
9910
用ggplot2画了一个我也叫不上名的炫酷图表
66-R可视化10-自由的在ggplot上添加文本(柱状图加计数)
先前提到了60-R可视化-8-用ggsignif做统计分析绘图 (qq.com)这个包。
北野茶缸子
2021/12/17
12.2K1
66-R可视化10-自由的在ggplot上添加文本(柱状图加计数)
终于等到你——ggplot2树状图
2017年8月份的R语言更新包中,默默地加入了支持ggplot2树状图的新几何对象,从此在R语言中制作树状图,不用再求助于第三方包的辅助了。 该包既有Cran上的正式发行版,也有托管在GitHub上的开发版,安装方式如下: CRAN: install.package("treemapify") Github: devtools::install_github("wilkox/treemapify") GitHub主页: https://github.com/wilkox/treemapify 载入本文章所
数据小磨坊
2018/04/11
2.3K0
终于等到你——ggplot2树状图
R包:ggalign调整和组合多个图形的R包
这个包扩展了ggplot2,提供了用于对齐和组织多个图的高级工具,特别是那些自动重新排序观察结果的工具,比如树形图。它提供了对布局调整和情节注释的精细控制,使您能够创建复杂的、出版质量的可视化,同时仍然使用熟悉的ggplot2语法。
生信学习者
2025/02/25
2050
R包:ggalign调整和组合多个图形的R包
R数据可视化简单小例子~NBA球员薪水排行榜Top10
http://www.espn.com/nba/salaries/_/year/2020
用户7010445
2020/06/10
7070
R数据可视化简单小例子~NBA球员薪水排行榜Top10
R优雅的进行统计分析(2)自定义添加统计信息
❝本节来介绍如何使用R语言来做统计分析,通过「rstatix」包进行统计检验,完全使用tidyverse体系进行数据清洗及可视化,使用add_pvalue,stat_pvalue_manual两个函数来自定义添加p值 ❞ 加载R包 library(tidyverse) library(rstatix) library(ggprism) library(ggpubr) library(ggsci) 数据清洗 df <- ToothGrowth %>% mutate(dose=as.factor(d
R语言数据分析指南
2022/09/21
7950
R优雅的进行统计分析(2)自定义添加统计信息
全网最全的R语言基础图形合集
直方图是一种对数据分布情况进行可视化的图形,它是二维统计图表,对应两个坐标分别是统计样本以及该样本对应的某个属性如频率等度量。
生信学习者
2024/06/12
1090
全网最全的R语言基础图形合集
用数据来聊聊国产电影~
最近国产电影评分风波引起了很多人的关注,豆瓣和猫眼因国产电影评分过低此被电影局约谈了,猫眼电影还因此下线了自己的电影评分系统,作为好奇宝宝,小魔方也来凑一波热闹。 当然今天不是要谈政治啦,刚好最近在学爬虫,那就爬一点儿官产电影的数据,用数据告诉大家,国产电影的真实处境。。(受限于技术手段和代码水平,数据不全,分析过程不敢保证精准,仅作为个人练习使用,请谨慎使用)。 #以下是本文所使用的一些依赖包: library(rvest) library(data.table) library(stringr) lib
数据小磨坊
2018/04/11
6960
用数据来聊聊国产电影~
R绘图|转录组上游分析结果可视化-双向柱状图
整理毕业论文数据的时候,想将RNA-seq上游的一些分析结果可视化,主要是比对和定量的结果,通过图表展示反而没有那么直观,经过一番摸索,最后画出了下面的图。
小汪Waud
2023/02/20
8110
R绘图|转录组上游分析结果可视化-双向柱状图
ggplot2绘制科研数据柱状图~
ggplot2是一个神奇的R包,可以将自己的统计数据绘制成想要的图案。从今天起小编计划为各位观众老爷们带来一个ggplot2的系列教程。那么首先呢,大家在可视化自己的科研数据时,最最最常用的就是绘制一个带误差或者显著值的柱状图。
作图丫
2022/03/29
2.8K0
ggplot2绘制科研数据柱状图~
高维数据 | R语言数据可视化之日历图
日历图,在环境与生态指标的动态监测中应用普遍,特别适用于显示不同时间段的指标情况。比如污染物中重金属含量、空气中PM2.5变化情况。在金融行业中检测股票收盘价、回测信号等指标中也很常见。生物医药领域的血糖或血压日记录值,新型冠状病毒的逐日确诊数量等等。通过时间分布的日历图动态监测数据,以弥补普通线图的不足。
黑妹的小屋
2020/08/06
2K0
ggplot barplot and error bars
关于这个误差bar的添加,主要的问题其实是计算的问题,需要max和min,如果存在分组的问题,那么就需要使用按照分组再计算max和min,然后再在aes中使用。 love&peace
火星娃统计
2020/09/15
1.6K0
ggplot barplot and error bars
多组差异表达分析火山图合并绘制
总共4个分组的差异分析,频率为4的基因就是共同的差异表达基因。我们选择3个来显示:
DoubleHelix
2023/02/27
1.4K0
多组差异表达分析火山图合并绘制
数据挖掘知识脉络与资源整理(九)–柱形图
柱形图 简介 英文:histogram或者column diagram 排列在工作表的列或行中的数据可以绘制到柱形图中。在柱形图中,通常沿水平轴组织类别,而沿垂直轴组织数值。 柱形图具有下列图表子类型
小莹莹
2018/04/25
4K0
数据挖掘知识脉络与资源整理(九)–柱形图
R语言ggplot2画热图添加分组信息的颜色条
之前有人在公众号留言问文章开头这幅图如何实现,下面的B图是折线图加柱形图,相对比较容易实现,上面的A图稍微有点复杂,我想到的办法是拼图,图A可以看成三个热图,然后加一个堆积柱形图,最后将四个图组合到一起。那就按照这个思路试一下看能不能实现。 最初的想法是左侧的颜色条用堆积柱形图来实现,又看了一遍Y叔公众号关于aplot这个包的推文,发现他是用geom_tile()函数实现的,仔细想想还是geom_tile()函数实现起来比较方便。 首先解决昨天的遗留问题:ggplot2画图添加文字内容的时候如何添加下划线
用户7010445
2021/01/06
5.3K0
推荐阅读
相关推荐
ggfittext | 这样绘制文本不要太简单了...
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档