有一张表UserInfo,
字段(UserNo 用户编号,UserName 用户名,UserAge 用户年龄,UserSalary 用户薪水)
这张表存储了100万左右的数据,
请用一条你认为最高效的sql实现以下条件数据条数的统计。
1. UserSalary >9999 and UserAge >35
2. UserSalary >9999 and UserAge <35
3. UserSalary <9999 and UserAge >35
4. UserSalary <9999 and UserAge <35 遇到的这个面试题,也不知道标准答案,大家有什么好的办法呢?
字段(UserNo 用户编号,UserName 用户名,UserAge 用户年龄,UserSalary 用户薪水)
这张表存储了100万左右的数据,
请用一条你认为最高效的sql实现以下条件数据条数的统计。
1. UserSalary >9999 and UserAge >35
2. UserSalary >9999 and UserAge <35
3. UserSalary <9999 and UserAge >35
4. UserSalary <9999 and UserAge <35 遇到的这个面试题,也不知道标准答案,大家有什么好的办法呢?
我认为他想考你union 和 union all会不会用。我以前民曾经遇到别人这么考我,那时我不会select COUNT(用户编号) as count1 from UserInfo where UserSalary >9999 and UserAge >35
union all select COUNT(用户编号) as count2 from UserInfo where UserSalary >9999 and UserAge <35
union all select COUNT(用户编号) as count3 from UserInfo where UserSalary <9999 and UserAge >35
union all select COUNT(用户编号) as count4 from UserInfo where UserSalary <9999 and UserAge <35
这个条件涵盖所有,所以索引只要有这两个字段的就OK了(索引扫描)
sum(case when UserSalary >9999 and UserAge <35 then 1 else 0 end ) as count2,
sum(case when UserSalary <9999 and UserAge >35 then 1 else 0 end ) as count3,
sum(case when UserSalary <9999 and UserAge <35 then 1 else 0 end ) as count4
from UserInfo