简体   繁体   English

计算多列中最大值的平均值

[英]Calculate Average of the largest values in multiple columns

I have this table我有这张桌子

[1|Sub1|Mark1|Sub2|Mark2|Subj3|Mark3|...]
[2|JSP |85   |ASP |70   |PHP  |95   |...]

I need the average Marks of the two highest subjects?我需要两个最高科目的平均分吗?

For example例如

avg(Mark1,Mark3);平均(标记1,标记3);

May be are you asking this?可能是你问这个?

SELECT ID,
  (SELECT AVG(v) 
   FROM (VALUES (Mark1), (Mark2), (Mark3), (Mark4), (Mark5)) AS value(v)) as [AverageMarks]
FROM Table1

If you are looking for only Average of 2 highest subjects among 3 subjects then try this.如果您只在 3 个科目中寻找 2 个最高科目的平均分,那么试试这个。

SELECT ID,
  (SELECT (SUM(v)-MIN(V))/2
   FROM (VALUES (Mark1), (Mark2), (Mark3)) AS value(v)) as [AverageMarks]
FROM Table1

FIDDLE DEMO 小提琴演示

Consider the following:考虑以下:

DROP TABLE IF EXIST my_table;

CREATE TABLE my_table
(subject CHAR(3) PRIMARY KEY
,mark INT NOT NULL
);

INSERT INTO my_table VALUES
('JSP',85),
('ASP',70),
('PHP',95);   

SELECT AVG(a.mark)
  FROM 
     ( SELECT mark FROM my_table ORDER BY mark DESC LIMIT 2 ) a;

+-------------+
| AVG(a.mark) |
+-------------+
|     90.0000 |
+-------------+

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

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