sql - 返回查询中比较的结果
问题描述
我正在处理下表之间的查询:
任务:
id | name
-----+-------------
101 | MinDist
123 | Equi
142 | Median
300 | Tricoloring
报告:
id | task_id | candidate | score
----+----------+-------------------+--------
13 | 101 | John Smith | 100
24 | 123 | Delaney Lloyd | 34
37 | 300 | Monroe Jimenez | 50
49 | 101 | Stanley Price | 45
51 | 142 | Tanner Sears | 37
68 | 142 | Lara Fraser | 3
83 | 300 | Tanner Sears | 0
我的输出应该是这样的:
task_id | task_name | difficulty
---------+--------------+------------
101 | MinDist | Easy
123 | Equi | Medium
142 | Median | Hard
300 | Tricoloring | Medium
到目前为止,我所做的就是这样,但是不起作用:
SELECT rp.task_id, tasks.name, difficulty
FROM tasks
JOIN reports AS rp
WHERE
case when AVG(rp.score) < 20 then difficulty 'Hard' end as difficulty,
case when 20 < AVG(rp.score) < 60 then difficulty 'Medium' end as difficulty,
case when 60 < AVG(rp.score) then difficulty 'Easy' end as difficulty,
GROUPBY rp.task_id;
我得到这个错误:
输出(stderr):“WHERE”处或附近的语法错误第 5 行:WHERE
^
解决方案
您需要在以下定义列SELECT
:
SELECT t.id, t.name,
(case when AVG(rp.score) < 20 then 'Hard'
when AVG(rp.score) < 60 then 'Medium'
else 'Easy'
end) as difficulty
FROM tasks t JOIN
reports rp
ON t.id = rp.task_id
GROUP BY t.id, t.name;
推荐阅读
- javascript - 在javascript中获取文件夹大小
- c# - 使用 write XML 创建 XML 文件并将数据集写入其中
- php - 我无法回显 PHP cURL 响应的第一个索引
- php - 使用标头位置时获取 HTTP ERROR 500
- regex - 如何借助正则表达式在电子邮件中获取特定单词并使用 Outlook VBA 将该单词插入文件名中?
- php - 替换以字符开头的字符串
- azure - 使用具有所有者角色的帐户创建 LoadBalancer 服务时 AKS 授权失败
- python-3.x - D分离python实现
- python - 如何修改 Coupon Collector 问题的 Monte Carlo Simulation 代码
- python - 使用 Scikit 和 networkx 在网络中进行标签传播