今天去筆試碰到的一道題。
在一張員工表中,大概有1千萬條資料。用一條高效的sql陳述句求出salary>9999 and age>35,salary >9999and age <35,salary <9999 and age>35 ,salary <9999and age<35,四個區間的人數。
求大佬指教
uj5u.com熱心網友回復:
SELECTSUM(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、如果有磁區,可以統計每一個磁區的結果后,再求和。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/46797.html
標籤:MySQL
