SQL替代方案

时间:2014-10-13 14:13:47

标签: sql case

有没有更好的方法来处理这个SQL

有时我的收入= 0在某些情况下,我需要将月收入除以特定月份的非零收入

SELECT   "CLASS",
         "SCHOOL",
         "Year",
         "MONTH",
         Sum("JanIncome")/Sum(
         CASE
                  WHEN "JanIncome">0 THEN 1
                  ELSE NULL
         END) AS "JanAvg"
         Sum("FebIncome")/Sum(
         CASE
                  WHEN "FebIncome">0 THEN 1
                  ELSE NULL
         END) AS "FebAvg"
FROM     (
                SELECT *
                FROM   school )
GROUP BY "CLASS",
         "SCHOOL",
         "Year",
         "MONTH"; 

1 个答案:

答案 0 :(得分:2)

如何清空0并使用内置的AVG

SELECT "CLASS","SCHOOL","Year","MONTH",
  AVG(NULLIF("JanIncome",0)) AS "JanAvg",
  AVG(NULLIF("FebIncome",0)) as "FebAvg"

AVG忽略空值。

相关问题