一、ifnull 函数:
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
例1 :if null 函数的使用:
select name from customer
where ifnull (referee_id,0) != 2;
因为如果直接用where referee_id !=2 的话,null值也不会查询到,所以用if null ,先把空值定义为0,在使用查询
例题2 : if null 和表示相除
二、怎么表示两个相除
select round(
ifnull(
(select count(distinct requester_id ,accepter_id) from request_accepted) /
(select count(distinct sender_id ,send_to_id) from friend_request)
,0)
,2) as accept_rate ;
注意:select count (distinct requester_id,accepter_id ) from request_accepted =
select count(*) from (select distinct sender_id, send_to_id from friend_request)
两个都返回的是不同requester_id的表行数
SQL COUNT() 语法
SQL COUNT(column_name) 语法
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SQL COUNT() 语法
COUNT() 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name
SQL COUNT(DISTINCT column_name) 语法
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name
注意!!!
HAVING和WHERE都是用来筛选用的,having 是筛选组 而where是筛选记录
1)当分组筛选的时候 用having
2)其它情况用where
用having就一定要和group by连用;用group by不一有having(它只是一个筛选条件用的)
select 部门编号,count() from 员工信息表
where 工资>=2000
group by 部门编号
having count()>1
distinct必须放在(待作用字段)开头,且作用他后面的所有字段,只会剃掉所有字段相同的记录,有时候distinct解决不了的可以考虑用group by