3.6 计数行

作者: 笑Skr人啊 | 来源:发表于2017-04-07 15:51 被阅读0次

数据库经常用于回答这个问题,“某个类型的数据在表中出现的频度?”例如,你可能想要知道你有多少宠物,或每位主人有多少宠物,或你可能想要对你的动物进行各种类型的普查。

计算你拥有动物的总数目与“在pet表中有多少行?”是同样的问题,因为每个宠物有一个记录。COUNT(*)函数计算行数,所以计算动物数目的查询应为:


mysql> SELECT COUNT(*) FROM pet;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+
  • 在前面,你检索了拥有宠物的人的名字。如果你想要知道每个主人有多少宠物,你可以使用COUNT( )函数:
mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
+--------+----------+
| owner  | COUNT(*) |
+--------+----------+
| Benny  |        2 |
| Diane  |        2 |
| Gwen   |        3 |
| Harold |        2 |
+--------+----------+

注意,使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息:

mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) 
with no GROUP columns is illegal if there is no GROUP BY clause

COUNT( )和GROUP BY以各种方式分类你的数据。下列例子显示出进行动物普查操作的不同方式。

  • 每种动物的数量:
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
+---------+----------+
| species | COUNT(*) |
+---------+----------+
| bird    |        2 |
| cat     |        2 |
| dog     |        3 |
| hamster |        1 |
| snake   |        1 |
+---------+----------+
  • 每种性别的动物数量:
mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
+------+----------+
| sex  | COUNT(*) |
+------+----------+
| NULL |        1 |
| f    |        4 |
| m    |        4 |
+------+----------+

(在这个输出中,NULL表示“未知性别”。)

  • 按种类和性别组合的动物数量:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| bird    | NULL |        1 |
| bird    | f    |        1 |
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
| hamster | f    |        1 |
| snake   | m    |        1 |
+---------+------+----------+
  • 若使用COUNT( ),你不必检索整个表。例如, 前面的查询,当只对狗和猫进行时,应为:
    SELECT species, sex, COUNT() FROM pet GROUP BY species, sex;
    mysql> SELECT species, sex, COUNT(
    ) FROM pet
    -> WHERE species = 'dog' OR species = 'cat'
    -> GROUP BY species, sex;
    +---------+------+----------+
    | species | sex | COUNT() |
    +---------+------+----------+
    | cat | f | 1 |
    | cat | m | 1 |
    | dog | f | 1 |
    | dog | m | 2 |
    +---------+------+----------+
    SELECT species, sex, COUNT(
    ) FROM pet GROUP BY species, sex;

  • 如果你仅需要知道已知性别的按性别的动物数目:

 SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
mysql> SELECT species, sex, COUNT(*) FROM pet
    -> WHERE sex IS NOT NULL
    -> GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| bird    | f    |        1 |
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
| hamster | f    |        1 |
| snake   | m    |        1 |
+---------+------+----------+

相关文章

  • 3.6 计数行

    数据库经常用于回答这个问题,“某个类型的数据在表中出现的频度?”例如,你可能想要知道你有多少宠物,或每位主人有多少...

  • MySQL获取行数

    在本教程中,您将学习在数据库中获取MySQL行计数的各种方法。 获取单个表的MySQL行计数 要获取单个表的行计数...

  • 3.6杭州行

    今天去杭州参加混沌大学的开学典礼。我看到一群有梦想,有追求的创业者。大家在创业的路上。多多少少都会遇到一些迷茫和困...

  • 1.5.3行计数

    1-9的练习我看了习题解答之后,确实震惊了一下。书上的逻辑严谨而且很巧妙。他的思路是本次输入与上一次输入进行判断。...

  • pandas 用 .loc[,]=value 筛选并原地赋值回原

    环境Anaconda notebookPython 3.6pandas 0.20.0 问题:筛选出符合某些条件的行...

  • flutter环境配置

    flutter需安装Android Studio,但经实践,必须是3.6或以上版本才行。

  • pandas DataFrame索引行列

    python版本: 3.6pandas版本: 0.23.4 行索引 索引行有三种方法,分别是 loc iloc i...

  • Kotlin语言基础(二)

    3.6 代码注释 正如 Java 和 JavaScript,Kotlin 支持行注释及块注释。 与 Java 不同...

  • 聚合函数

    count count用于返回内容(行)的个数 COUNT(*) 能对整张表的内容(行)进行计数,不管内容(行)是...

  • Python概述

    版本python3.6 打印 打印hellow world出来 -- 注释的写法 -- 行注释: 以井号开头,可以...

网友评论

    本文标题:3.6 计数行

    本文链接:https://www.haomeiwen.com/subject/lrmhattx.html