我对SQL相当陌生,目前正在通过Codecademy学习。
我正在做一个CASE语句查询,但是我想通过添加一个ORDER来做一些额外的工作。
问题是:
用案例陈述将评分系统改为:考核大于4.5是非凡的,复习大于4是优秀的,复习大于3是好的,评论大于2是公平的,其他的都是差的。别忘了重新命名新列!
它给我的答案是:
SELECT name,
CASE
WHEN review > 4.5 THEN 'Extraordinary'
WHEN review > 4 THEN 'Excellent'
WHEN review > 3 THEN 'Good'
WHEN review > 2 THEN 'Fair'
ELSE 'Poor'
END AS 'Review'
FROM nomnom;
我想要做的是为专栏“评审”添加一个订单,但它是通过新的案例专栏“评审”来排序。如何指定要对原始列“评审”进行排序?还是必须重命名CASE列名?
我的尝试:
SELECT name AS 'Name',
CASE
WHEN review > 4.5 THEN 'Extraordinary'
WHEN review > 4 THEN 'Excellent'
WHEN review > 3 THEN 'Good'
WHEN review > 2 THEN 'Fair'
ELSE 'Poor'
END AS 'Review'
FROM nomnom
ORDER BY review DESC;
这将导致对CASE语句列'Review‘的顺序,而不是希望表列'review’的顺序。
如有其他建议或意见,敬请见谅!
发布于 2022-07-18 21:04:23
在ORDER子句中重复CASE表达式,但不使用名称。我知道这似乎是大量的代码和糟糕的枯燥,但它实际上只是一个复制/粘贴操作,在SQL中有许多地方,不幸的是,我们必须打破“不要重复自己”的规则。
或者我误解了,你想按列名来点菜。然后,您可以完全限定列名(ORDER BY nomnom.Review
)。
https://stackoverflow.com/questions/73028353
复制相似问题