繁体   English   中英

SQL 中的平均行数

[英]Average of rows in SQL

这是我的桌子

我想求MTK+IPA+PJOK表2的平均值

使用此代码

SELECT induk, nama, kelas,
       SUM(if (kdmapel=“111”,ratarata,0)) as MTK,
       SUM(if (kdmapel=“112”,ratarata,0)) as IPA,
       SUM(if (kdmapel=“115”,ratarata,0)) as PJOK,
       ((MTK+IPA+PJOK)/3) as NAR
from nilai
WHERE kelas=1 and semester=“ganjil”
group by induk

但它不起作用,错误说

#1054 -“字段列表”中的未知列“MTK”

MTK、IPA 和 PJOK 是根据组函数计算的。
所以他们不能像那样直接使用。

一种方法是将其全部包装在子查询中,然后在外部查询中计算 NAR。

但是,它们的计算非常简单且相似。
所以 NAR 的计算并不难。

SELECT induk, nama, kelas,
       SUM(if(kdmapel='111',ratarata,0)) as MTK,
       SUM(if(kdmapel='112',ratarata,0)) as IPA,
       SUM(if(kdmapel='115',ratarata,0)) as PJOK,
       (SUM(if(kdmapel IN('111','112','115'),ratarata,0))/3) as NAR
FROM nilai
WHERE kelas=1 and semester='ganjil'
GROUP BY induk

看起来您正在引用别名,但它不知道那是什么。

要么将其编写为 CTE,然后将别名列加在一起,要么先将结果存储在临时表中,然后再添加它们。

像这样的东西

;With myCte as
(

SELECT induk, 
       nama,
       kelas,
       SUM(if (kdmapel='111',ratarata,0)) as MTK, 
       SUM(if (kdmapel='112',ratarata,0)) as IPA, 
       SUM(if (kdmapel='115',ratarata,0)) as PJOK
      from nilai WHERE kelas=1 and semester='ganjil' 
      group by induk

)
Select *,
 ((MTK+IPA+PJOK)/3) as NAR
  From myCte

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM