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()应用

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);

  • 方法二:一段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;

(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

     ​​​​       

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

四、count+distinct去重

SELECT
    count(DISTINCT clazz)
FROM 
    user;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZYYzyy1993

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值