count(*) count(1) count(id)

一、count()函数

1、count(*)

         把所有的行数都查询出来,除非该行中所有的数据为null

SELECT
    COUNT(*)
FROM
    employees

        结果:107

2、count(commission_pct)

         把指定列所有的行数查出来,只要一行为null,那就不计数

SELECT
    COUNT(commission_pct)
FROM
    employees

        结果: 35

3、count(1)

         相当于新开了一列,其中所有数据为1,统计为1的行数

SELECT
    COUNT(1)
FROM
    employees

        结果:107 

二、count()应用

count(*) count(1) count(id)_第1张图片

1、count(*)count(id)或coun(1)—共有多少用户?

SELECT count(*) from user;

2、count(id) —求2班和4班的人数

SELECT count(id) FROM user u WHERE u.clazz in (2, 4);

3、求2班和4班占总人数的百分比

  • 方法一: 2班和4班的人数 / 总人数  (2段SQL)
SELECT
(SELECT count(id) FROM user u WHERE u.clazz IN (2, 4)) / (SELECT count(id) FROM user u);

count(*) count(1) count(id)_第2张图片

  • 方法二:一段SQL写出来

(1)count(clazz)—clazz不为null的个数

clazz有一个为null值,count(clazz)结果为14

SELECT count(clazz) FROM user;

(2)count(clazz=2 OR NULL)——查出2班的人数

count(clazz=2 OR NULL)表示clazz为2的显示,不为2的置为null——查出2班的人数为3

SELECT count(clazz=2 OR NULL) FROM user;

count(*) count(1) count(id)_第3张图片

(3)count(clazz=2 OR clazz=4 OR NULL)——查出2班和4班的人数

count(clazz=2 OR clazz=4 OR NULL)表示clazz为2或者4的显示,其余的置为null ——查出2班和4班的人数为8

SELECT count(clazz=2 OR clazz=4 OR NULL) FROM user;

(4)拿第3小问的结果除以总人数count(1),即可得到百分比

SELECT 
    count(clazz=2 OR clazz=4 OR NULL) / count(1) 
FROM user;

三、count+group by

1、count(*) + group by

     ​​​​    count(*) count(1) count(id)_第4张图片   count(*) count(1) count(id)_第5张图片

count(*) count(1) count(id)_第6张图片

相当于把所有同一个job_id(如AD_VP)的归为一类,并计数(共有多少个AD_VP)。

count(*) count(1) count(id)_第7张图片

四、count+distinct去重

SELECT
    count(DISTINCT clazz)
FROM 
    user;

  只有4个班级:1班、2班、3班和4班

count(*) count(1) count(id)_第8张图片

你可能感兴趣的:(MySQL,sql,数据库)