今天去笔试碰到的一道题。
在一张员工表中,大概有1千万条数据。用一条高效的sql语句求出salary>9999 and age>35,salary >9999and age <35,salary <9999 and age>35 ,salary <9999and age<35,四个区间的人数。
求大佬指教
在一张员工表中,大概有1千万条数据。用一条高效的sql语句求出salary>9999 and age>35,salary >9999and age <35,salary <9999 and age>35 ,salary <9999and age<35,四个区间的人数。
求大佬指教
SUM(CASE WHEN salary > 9999 and age > 35 THEN 1 ELSE 0 END),
SUM(CASE WHEN salary > 9999 and age < 35 THEN 1 ELSE 0 END),
SUM(CASE WHEN salary < 9999 and age > 35 THEN 1 ELSE 0 END),
SUM(CASE WHEN salary < 9999 and age < 35 THEN 1 ELSE 0 END)
FROM TABLE_NAME
1、这里有一个漏洞,就是salary = 9999 和 age = 35的数据会丢失。
2、如果salary和age都是整数,可以把salary > 9999修改成salary >= 10000,其它的也类似这样改。
3、最好在salary和age上加索引。
4、如果有分区,可以统计每一个分区的结果后,再求和。