热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GBase8s中COUNT函数使用

COUNT函数概述COUNT函数实际是使得您能够根据COUNT关键字之后的参数,以不同的方式对列值进行计数的一组函数。在下列小节中,说明COUNT函数的每一形式。COUNT()函数

COUNT 函数概述

COUNT 函数实际是使得您能够根据
COUNT 关键字之后的参数,以不同的方式对列值进行计数的一组函数。

在下列小节中,说明
COUNT 函数的每一形式。

COUNT(*) 函数

COUNT (*) 函数返回满足 SELECT 语句的 WHERE 子句的行数。

下列示例找到在 stock 表中有多少行在
manu_code 列中有值 HRO

SELECT COUNT(*) FROM stock WHERE manu_code =
'HRO';

下列示例查询“系统监视接口”(SMI)表之一来找到 customer 表中 extent 的数目:

SELECT COUNT(*) FROM sysextents WHERE dbs_name =
'stores' AND tabname = customer";

您可使用
COUNT(*) 作为此一般格式的查询中的 Projection
子句来从 SMI 表获取信息。要了解关于 sysextents 和其他 SMI 表的信息,请参阅描述 sysmaster 数据库的 GBase 8s 管理员参考手册 章节。

如果 SELECT 语句没有 WHERE 子句,则 COUNT (*) 函数返回该表中行的总数。下列示例找到在 stock 表中有多少行:

SELECT COUNT(*) FROM stock;

如果 SELECT 语句包含 GROUP BY 子句,则 COUNT (*) 函数反映在每一组中值的数目。下列示例按第一个名称分组;如果数据库服务器发现同一名称多次出现,则选择这些行:

SELECT fname, COUNT(*) FROM customer GROUP BY
fname

HAVING COUNT(*) > 1;

如果一行或多行的值为 NULL,则 COUNT
(*)
函数在计数中包括 NULL 列,除非 WHERE 子句显式地省略它们。

COUNT DISTINCT 和 COUNT UNIQUE 函数

COUNT
DISTINCT

COUNT UNIQUE 函数返回唯一的值。

COUNT DISTINCT 函数返回列或表达式中唯一值的数目,如下例所示。

SELECT COUNT (DISTINCT item_num) FROM items;

如果
COUNT DISTINCT 函数遇到 NULL 值,则它忽略它们,除非指定的列中的每个值都是 NULL。如果每个列值都是 NULL,则 COUNT DISTINCT 函数返回零(0)。

UNIQUE 关键字与 COUNT 函数中的 DISTINCT 关键字有相同的含义。UNIQUE 关键字指导数据库服务器返回列或表达式中唯一的非 NULL 值的数目。下列示例调用 COUNT UNIQUE 函数,但它等同于调用
COUNT
DISTINCT
函数的前一示例:

SELECT COUNT (UNIQUE item_num) FROM items;

如果 Projection 子句未指定 SELECT 语句的 DISTINCT 或 UNIQUE 关键字,则该查询可包括多个 COUNT 函数,每一函数包括 DISTINCT 或 UNIQUE 关键字作为参数列表中的第一个规范,如下例所示:

SELECT COUNT (UNIQUE item_num), COUNT (DISTINCT order_num) FROM
items;

COUNT 列函数

COUNT 函数返回列或表达式中非 NULL 值的总数目,如下例所示:

SELECT COUNT (item_num) FROM items;

为清楚起见,可将 ALL 关键字置于指定的列名称前面,但不论您包括 ALL 关键字还是省略它,查询结果都一样。

下列示例展示如何在 COUNT 函数中包括 ALL 关键字:

SELECT COUNT (ALL item_num) FROM items;

COUNT 函数的参数

COUNT 函数接受其他内建的聚集函数的参数列表中允许的相同的表达式作为它的参数,以及仅
COUNT 支持的星号(*)表示法。支持下列内建的表达式的类别作为
COUNT 的参数,如下列示例所示:

l    算术表达式

COUNT(times(gbasedbt.sysfragments.evalpos,2))

SELECT COUNT(a+1), COUNT(2*a), COUNT(5/a), COUNT(times(a, 2)) FROM myTable;

l    位逻辑函数

COUNT(BITAND(gbasedbt.systables.flags,1))

SELECT COUNT(BITAND(a,1)), COUNT(BITOR(8, 20)), COUNT(BITXOR(41, 33)),

COUNT(BITANDNOT(20,-20)), COUNT(BITNOT(8)) FROM myTable;

l    强制转型表达式

COUNT(NULL::int)

l    条件表达式

COUNT(CASE WHEN stock.description = "baseball gloves" THEN 1 ELSE NULL END)

SELECT COUNT(CASE WHEN s=14 THEN 1 ELSE NULL END) AS cnt14 FROM all_types;

SELECT COUNT(NVL (ch, 'Addr unk')) FROM all_types;

SELECT COUNT(NULLIF(ch, NULL)) FROM all_types;

l    常量表达式

COUNT(CURRENT_ROLE)

COUNT(DATETIME (2007-12-6) YEAR TO DAY)

SELECT COUNT("XX"), COUNT(99),COUNT("t") FROM sysmaster:sysdual;

SELECT COUNT(SET{6, 9, 9, 4}) FROM sysmaster:sysdual;

SELECT COUNT("ROW(7, 3, 6.0, 2.0)") FROM sysmaster:sysdual;

SELECT COUNT(USER), COUNT(CURRENT), COUNT(SYSDATE) from sysmaster:sysdual;

SELECT COUNT(CURRENT_ROLE), COUNT(DEFAULT_ROLE) from sysmaster:sysdual;

SELECT COUNT(DBSERVERNAME), COUNT(TODAY), COUNT(CURRENT) from sysmaster:sysdual;

SELECT COUNT(DATETIME (2007-12-6) YEAR TO DAY) from sysmaster:sysdual;

SELECT COUNT(INTERVAL (16) DAY TO DAY) FROM sysmaster:sysdual;

SELECT COUNT(5 UNITS DAY) FROM sysmaster:sysdual;

l    函数表达式

COUNT(LENGTH ('abc') + LENGTH (stock.description}

COUNT(DBINFO('sessionid'))

COUNT(user_proc())  --> proc() 是用户定义例程列表达式

COUNT(gbasedbt.sysfragauth.fragment)

您还可使用星号(*)字符,或列名称,或带有 ALL、DISTINCT 或 UNIQUE 聚集作用域限定符的列名称作为 COUNT 函数的参数,来检索关于表的不同类型的信息。下面的表格总结带有星号或列名称参数的
COUNT 函数的每一下列形式的含义。






















COUNT 函数



描述



COUNT (*)



返回满足查询的行的数目。如果您未指定 WHERE 子句,此函数返回表中行的总数目。



COUNT (DISTINCT) 或 COUNT
(UNIQUE)



返回指定的类中唯一的非 NULL 值的数目



COUNT (column) 或 COUNT (ALL column)



返回指定的列中非 NULL 值的总数目


有些示例可帮助展示引用一列的不同形式的
COUNT 函数之间的差异。大部分下列示例查询对应的是 stores_demo 演示数据库中 orders 表的 ship_instruct 列。要获取关于 orders 表的模式以及 ship_instruct 列中的数据值的信息,请参阅 《GBase 8s SQL 指南:参考》
中对演示数据库的描述。

COUNT(*) 函数的示例

在下列示例中,用户想要知道
orders 表中行的总数目。于是,用户在不带有 WHERE 子句的 SELECT 语句中调用 COUNT(*) 函数:

SELECT COUNT(*) AS total_rows FROM orders;

下列表格展示此查询的结果。









total_rows



23


在下列示例中,用户想要知道在
orders 表中有多少行在 ship_instruct 列中有 NULL 值。用户在带有 WHERE 子句的 SELECT 语句中调用 COUNT(*) 函数,并在 WHERE 子句中指定 IS NULL 条件:

SELECT COUNT (*) AS no_ship_instruct FROM orders

         
WHERE ship_instruct IS NULL;

下列表格展示此查询的结果。









no_ship_instruct



2


在下列示例中,用户想要知道在
orders 表中有多少行在 ship_instruct 列中有值 express。 于是,用户在 projection 列表中调用 COUNT(*) 函数,并在 WHERE 子句中指定等于(=)关系运算符。

SELECT COUNT (*) AS ship_express FROM ORDERS

         
WHERE ship_instruct = 'express';

下列表格展示此查询的结果。









ship_express



6


COUNT DISTINCT 函数的示例

在下一示例中,用户想要知道在
orders 表的 ship_instruct 列中有多少个唯一的非
NULL 值。用户在 SELECT 语句的 projection 列表中调用 COUNT DISTINCT 函数:

SELECT COUNT(DISTINCT ship_instruct) AS
unique_notnulls

FROM orders;

下列表格展示此查询的结果。









unique_notnulls



16


COUNT column 函数的示例

在下列示例中,用户想要知道在
orders 表的 ship_instruct 列中有多少非 NULL 值。该用户在 SELECT 语句的 Projection 列表中调用 COUNT(column) 函数:

SELECT COUNT(ship_instruct) AS total_notnulls
FROM orders;

下列表格展示此查询的结果。









total_notnulls



21


对于
ship_instruct 列中非 NULL 值的一个类似的查询可在跟在 COUNT 关键字之后的圆括号中包括 ALL 关键字:

SELECT COUNT(ALL ship_instruct) AS all_notnulls
FROM orders;

下列表格展示该查询结果,不论您包括还是省略 ALL 关键字(因为缺省值为 ALL),查询结果都一样。















































all_notnulls



21



推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
author-avatar
枇杷语1314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有