SQL替代方案
有没有更好的方法来处理这个SQL 有时我的收入=0在某些情况下,我需要每月收入除以特定月份的非零收入SQL替代方案,sql,case,Sql,Case,有没有更好的方法来处理这个SQL 有时我的收入=0在某些情况下,我需要每月收入除以特定月份的非零收入 SELECT "CLASS", "SCHOOL", "Year", "MONTH", Sum("JanIncome")/Sum( CASE WHEN "JanIncome">0 THEN 1 ELSE NULL
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";
将0置零并使用内置的平均值如何:
忽略空值。from Select*from School可以是just from School您想使用一个月内的所有天数,例如1月31日,还是只使用非零值的平均值?仅使用非零值的平均值数据,请回答一个后续问题,假设我有3个值为7、0、2的记录,在本例中为AVGNULLIFJanIncome,0为JanAvg,结果是9/2=4.5或9/3=3..@Ram-4.5。如果您没有这方面的经验,那么在您的机器上设置一个数据库服务器,熟悉临时表或表变量,或者使用-在获得这些问题的答案所需的时间内,您可以自己尝试一下,看看它是如何工作的。
SELECT "CLASS","SCHOOL","Year","MONTH",
AVG(NULLIF("JanIncome",0)) AS "JanAvg",
AVG(NULLIF("FebIncome",0)) as "FebAvg"