相关疑难解决方法(0)

获取AVG忽略Null或Zero值

如何获取AVG列忽略NULL和零值?

我有三列来获得他们的平均值,我尝试使用以下脚本:

SELECT distinct
     AVG(cast(ISNULL(a.SecurityW,0) as bigint)) as Average1
     ,AVG(cast(ISNULL(a.TransferW,0) as bigint)) as Average2
     ,AVG(cast(ISNULL(a.StaffW,0) as bigint)) as Average3
FROM Table1 a,  Table2 b
WHERE a.SecurityW <> 0 AND a.SecurityW IS NOT NULL
AND a.TransferW<> 0 AND a.TransferWIS NOT NULL
AND a.StaffW<> 0 AND a.StaffWIS NOT NULL
AND MONTH(a.ActualTime) = 4
AND YEAR(a.ActualTime) = 2013
Run Code Online (Sandbox Code Playgroud)

我没有得到任何结果,但是三列的值包括NULL和零!

无论如何在获得平均值之前排除空值?

例: AVERAGE(NOTNULL(SecurityW))

sql t-sql sql-server sql-server-2008-r2

36
推荐指数
4
解决办法
8万
查看次数

MySQL:使用空值求平均值

有没有一种简单的方法可以排除空值影响平均值?它们似乎算作0,这不是我想要的.我只是不希望把他们的平均考虑,但这里是抓,我不能从结果集中删除它们,因为该记录上有数据,我确实需要.

更新:

例:

select avg(col1+col2), count(col3) from table1
where
group by SomeArbitraryCol
having avg(col1+col2) < 500 and count(col3) > 3
order by avgcol1+col2) asc;
Run Code Online (Sandbox Code Playgroud)

这对我有用,但是平均值不准确,因为它们将空值计为0,这实际上是在抛弃整个平均值.

mysql sql

8
推荐指数
2
解决办法
2万
查看次数

直接使用dplyr突变数据库表中的变量

这是MonetDBLite数据库文件中的mtcars数据。

library(MonetDBLite)
library(tidyverse)
library(DBI)

dbdir <- getwd()
con <- dbConnect(MonetDBLite::MonetDBLite(), dbdir)

dbWriteTable(conn = con, name = "mtcars_1", value = mtcars)

data_mt <- con %>% tbl("mtcars_1")
Run Code Online (Sandbox Code Playgroud)

我想使用dplyr mutate创建新变量并将其添加(提交!)到数据库表中吗?就像是

data_mt %>% select(mpg, cyl) %>% mutate(var = mpg/cyl) %>% dbCommit(con)
Run Code Online (Sandbox Code Playgroud)

这样做时,所需的输出应该相同:

dbSendQuery(con, "ALTER TABLE mtcars_1 ADD COLUMN var DOUBLE PRECISION")
dbSendQuery(con, "UPDATE mtcars_1 SET var=mpg/cyl") 
Run Code Online (Sandbox Code Playgroud)

那怎么办

r dplyr r-dbi monetdblite dbplyr

6
推荐指数
1
解决办法
933
查看次数

标签 统计

sql ×2

dbplyr ×1

dplyr ×1

monetdblite ×1

mysql ×1

r ×1

r-dbi ×1

sql-server ×1

sql-server-2008-r2 ×1

t-sql ×1