RS')
,NULLIF (labor_hours, 0)
(TITLE 'NULLIF ZERO HOURS')
FROM call_employee
ORDER BY labor_hours;
注意:在除法表达式中,如果被除数有可能为零值,经常使用NULLIF来避免除零错。
D. COALESCE(接合)表达式
COALESCE实际上也是CASE语句在某种特殊情况下的宿写。COALESCE将返回第一个非NULL表达式的值。其格式为:
COALESCE ( , [, ] )
例:从phone_table表中,列出姓名和电话号码,如果办公室电话存在则列出办公室电话,否则列出家里电话。
SELECT name
,COALESCE (office_phone, home_phone)
FROM phone_table;
例:转换可能的NULL值为零:
SELECT course_name
,COALESCE (num_students, 0)
(TITLE '# Students')
FROM class_schedule;
www.2cto.com
简单排队RANK
排队函数(RANK)的语法是:
RANK(colname)
这里,colname表示排队的列名,其结果降序排列。
问题
显示商店1001的产品销售额排队。
解答
SELECT storeid, prodid, sales, RANK(sales)
FROM salestbl
WHERE storeid = 1001;
结果
storeid prodid sales Rank
1001 F 150000.00 1
1001 A 100000.00 2
1001 C 60000.00 3
1001 D 35000.00 4
如上所示,列Rank的最大值代表最低的销售额。
www.2cto.com
带限定的排队
QUALIFY子句限制排队输出的最终结果。QUALIFY子句与HAVING子句类似,使输出限制在一定范围内。
问题
按商店得到销售前3名的产品。
解答
SELECT storeid, prodid, sales, rank(sales)
FROM salestbl
GROUP BY storeid
QUALIFY rank(sales) <= 3;
结果
storeid prodid sales Rank
1001 A 100000.00 1
1001 C 60000.00 2
1001 D 35000.00 3
1002 A 40000.00 1
1002 C 35000.00 2
1002 D 25000.00 3
1003 B 65000.00 1
1003 D 50000.00 2
1003 A 30000.00 3