数据库经常用来回答这样一个问题:“某一类型的数据在表中出现的频率是多少?”,例如,你可能想知道你养了多少宠物,或者每个主人养了多少宠物,或者你可能想对你的动物进行各种各样的统计查询。

数一数你拥有的动物总数和“pet 表中有多少行记录?”是同一个问题。因为每只宠物都有一个记录。COUNT(*)用于计算行数,因此计算动物数的查询如下所示: 在之前的查询中,我们曾查过宠物主人的名字,如果需要,现在可以使用COUNT() 查出每位主人有多少宠物: 前面的查询使用GROUP BY对每个所有者的记录进行分组。将COUNT()与GROUP BY结合使用对于在各种分组下描述数据非常有用。以下示例显示了执行动物查询操作的不同方法。 查询每种动物的数量: 查询每个性别的动物数量: (在这个查询结果中, NULL表示性别是未知的。) 查询每个物种和性别组合的动物数量: 使用COUNT()时不一定要检索整个表。例如,上一个查询可以仅对狗和猫执行查询,如下所示: 查询性别已知的每个性别动物的数量: 如果除了COUNT()值之外还要选择别的列,则应该在GROUP BY子句中指定这些列。否则,将发生以下情况:

●如果启用了ONLY_FULL_GROUP_BY SQL模式,则会发生错误: ●如果未启用ONLY_FULL_GROUP_BY,则将所有行视为单个组来处理查询,但为每个命名列选择的值是不确定的。服务器可以自由选择任何行中的值: