相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.1 mb
PDF (A4)- 41.2 mb
PDF (RPM)- 39.8 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.6 mb
HTML下载(RPM)- 8.1 mb
手册页(TGZ)- 260.6 kb
手册页(Zip)- 371.7 kb
信息(Gzip)- 3.9 mb
信息(邮政编码)- 3.9 mb
本手册节选

3.3.4.8行数统计

数据库经常被用来回答这个问题,某种类型的数据在表中出现的频率是多少?例如,您可能想知道您有多少只宠物,或者每个主人有多少只宠物,或者您可能想对您的动物执行各种普查操作。

计算你所拥有的动物的总数是同样的问题有多少行宠物表吗?因为每个宠物都有一条记录。COUNT (*)计算行数,因此计算动物数量的查询如下所示:

SELECT COUNT(*) FROM pet;+----------+ | 数 (*) | +----------+ | 9  | +----------+

前面,您检索了拥有宠物的人的姓名。你可以使用COUNT ()如果你想知道每个主人有多少宠物:

SELECT owner, COUNT(*) FROM pet GROUP BY owner+--------+----------+ | 主人|计数 (*) | +--------+----------+ | 戴安Benny | 2 | | | 2 | |格温| 3 | |哈罗德| 2  | +--------+----------+

上面的查询使用集团对每个记录进行分组老板.使用COUNT ()连同集团对于在各种分组下描述数据非常有用。下面的例子展示了执行动物普查操作的不同方法。

每种动物数量:

mysql> SELECT species, COUNT(*) FROM pet GROUP BY species+---------+----------+ | 物种|计数 (*) | +---------+----------+ | 猫鸟| 2 | | | 2 | |狗| 3 | |仓鼠| 1 | | 1 |的蛇  | +---------+----------+

每性别的动物数量:

mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex+------+----------+ | 性|计数 (*) | +------+----------+ | f零| 1 | | | 4 | | | 4  | +------+----------+

(在此输出中,表示性别未知。)

每种物种和性别组合的动物数量:

mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex+---------+------+----------+ | 物种性| |计数 (*) | +---------+------+----------+ | f鸟鸟零| 1 | | | | | 1 | | |猫f | 1 | | |猫m | 1 | | |狗f | 1 | | |狗m | 2 | |仓鼠| f | 1 | | |蛇m | 1  | +---------+------+----------+

使用时不需要检索整个表COUNT ().例如,之前的查询,当只对狗和猫执行时,看起来像这样:

mysql> SELECT species, sex, COUNT(*) FROM pet WHERE species = 'dog' OR species = 'cat' GROUP BY species, sex;+---------+------+----------+ | 物种性| |计数 (*) | +---------+------+----------+ | 猫猫| f | 1 | | | m | 1 | | |狗f | 1 | | | |米狗2  | +---------+------+----------+

或者,如果你只想知道性别已知的动物的性别数量:

mysql> SELECT species, sex, COUNT(*) FROM pet WHERE sex NOT NULL GROUP BY species, sex+---------+------+----------+ | 物种性| |计数 (*) | +---------+------+----------+ | f猫鸟| f | 1 | | | | 1 | | |猫m | 1 | | |狗f | 1 | | |狗m | 2 | |仓鼠| f | 1 | | |蛇m | 1  | +---------+------+----------+

如果要选择除名称列之外的列COUNT ()值,集团子句,命名相同的列。否则,会发生以下情况:

  • 如果ONLY_FULL_GROUP_BY启用SQL模式时,报错:

    mysql> SET sql_mode = 'ONLY_FULL_GROUP_BY';mysql> SELECT owner, COUNT(*) FROM pet错误1140(42000):在没有GROUP BY的聚合查询中,SELECT列表的表达式#1包含非聚合列' zoo .pet.owner';这与sql_mode=only_full_group_by不兼容
  • 如果ONLY_FULL_GROUP_BY未启用时,将通过将所有行视为单个组来处理查询,但为每个命名列选择的值是不确定的。服务器可以从任意行中选择值:

    mysql> SET sql_mode = ";mysql> SELECT owner, COUNT(*) FROM pet+--------+----------+ | 主人|计数 (*) | +--------+----------+ | 哈罗德| 8  | +--------+----------+ 1行集(0.00秒)

另请参阅第12.20.3节,“MySQL处理GROUP BY”.看到第12.20.1节,“聚合功能描述”有关计数(expr行为和相关的优化。