【发布时间】:2022-01-07 16:11:52
【问题描述】:
我正在尝试从结果中计算平均值,然后加入它们。
我的主要查询在这里:
SELECT
A.USERNAME,
A.TOTAL,
A.MATH
FROM
(SELECT
B.USERNAME,
COUNT(CLASS_ID) TOTAL,
SUM(CASE WHEN ROOM_ID = '1001' THEN 1 ELSE 0 END) AS MATH
FROM A LESSON, STUDENT B
WHERE
A.USERNAME = B.USERNAME
AND A.CREATED_DATE >= TO_DATE(:created_date ,'YYYYMMDDHH24MISS')
AND A.CREATED_DATE < TO_DATE(:created_end_date ,'YYYYMMDDHH24MISS')
GROUP BY B.USERNAME
ORDER BY TOTAL DESC) A
它给了我:
|USERNAME|TOTAL|MATH|
|John | 480|159 |
|Dave | 360|120 |
|Sarah | 540|130 |
|James | 361|185 |
|Kim | 640|92 |
|Matt | 11 |2 |
|Jane | 8 |1 |
但我想变成这样:
|USERNAME|TOTAL|AVG_FROM_TOTAL|MATH|AVG_FROM_MATH|
|John | 480| 476 | 159| 137 |
|Dave | 360| 476 | 120| 137 |
|Sarah | 540| 476 | 130| 137 |
|James | 361| 476 | 185| 137 |
|Kim | 640| 476 | 92| 137 |
是这样手动计算的
- (480+360+540+361+640/5 = 476) /将删除用户Matt和Jane 因为别人的评价太低了/
- (159+120+130+185+92/5 = 137) /删除了马特和简的结果/
如何创建要计算的查询?是否可以根据结果计算平均值?
【问题讨论】:
-
解释你所说的“太低”是什么意思。我无法添加该逻辑,因为没有“太低”的逻辑描述。
标签: sql oracle join select average