将列的聚合与相同 table 的另一列进行比较
Compare aggregate of column with another column of same table
我有一个 table D_MARK
布局如下,
+---------+-----------+-------------------------+
| CLAS_ID | MARK | MARK_THRESHOLD |
+---------+-----------+-------------------------+
| 9001 | 5 | 10 |
| 9001 | 10 | 10 |
| 9004 | 5 | 10 |
+---------+-----------+-------------------------+
我正在尝试根据以下逻辑从这个 table 创建一个 View:-
1.Need 按 CLAS_ID
.
做 sum(MARK
) 分组
2.Need 将 sum(MARK
) 展示为 FINAL_MARK 这样,if sum(MARK) > MARK_THRESHOLD then MARK_THRESHOLD else sum(MARK)
预期输出:-
+---------+-----------+
| CLAS_ID | FINAL_MARK|
+---------+-----------+
| 9001 | 10 |
| 9004 | 5 |
+---------+-----------+
这就是我到目前为止所做的,
CREATE VIEW V1 AS SELECT CLAS_ID, SUM(CASE WHEN SUM(MARK) > MARK_THRESHOLD THEN MARK_THRESHOLD ELSE SUM(MARK) END) AS FINAL_MARK
FROM `D_MARK` GROUP BY CLAS_ID;
执行此操作时,我收到 Invalid use of group function
错误。我猜想在 case 中使用聚合函数是一个很大的问题吗?
所以我想知道是否有人可以帮助我一点,因为我对此很陌生。提前致谢。
P.S。 MARK_THRESHOLD
对于特定的 CLAS_ID
是相同的。
我有一个 table D_MARK
布局如下,
+---------+-----------+-------------------------+
| CLAS_ID | MARK | MARK_THRESHOLD |
+---------+-----------+-------------------------+
| 9001 | 5 | 10 |
| 9001 | 10 | 10 |
| 9004 | 5 | 10 |
+---------+-----------+-------------------------+
我正在尝试根据以下逻辑从这个 table 创建一个 View:-
1.Need 按 CLAS_ID
.
MARK
) 分组
2.Need 将 sum(MARK
) 展示为 FINAL_MARK 这样,if sum(MARK) > MARK_THRESHOLD then MARK_THRESHOLD else sum(MARK)
预期输出:-
+---------+-----------+
| CLAS_ID | FINAL_MARK|
+---------+-----------+
| 9001 | 10 |
| 9004 | 5 |
+---------+-----------+
这就是我到目前为止所做的,
CREATE VIEW V1 AS SELECT CLAS_ID, SUM(CASE WHEN SUM(MARK) > MARK_THRESHOLD THEN MARK_THRESHOLD ELSE SUM(MARK) END) AS FINAL_MARK
FROM `D_MARK` GROUP BY CLAS_ID;
执行此操作时,我收到 Invalid use of group function
错误。我猜想在 case 中使用聚合函数是一个很大的问题吗?
所以我想知道是否有人可以帮助我一点,因为我对此很陌生。提前致谢。
P.S。 MARK_THRESHOLD
对于特定的 CLAS_ID
是相同的。