我正在 coursera 上学习 SQL 课程,这个问题是在练习测验中出现的
“不包括 0.00 美元,双周最低工资是多少(请在答案中包含美元符号和小数点)?
现在我使用
得到了正确的答案(返回了 100.00 美元)SELECT
min(Biweekly_High_Rate)
FROM
salary_range_by_job_classification
WHERE Biweekly_High_Rate <> '$0.00'
但是,当我使用同一个表中的 SELECT * 进行查询时,我可以看到,至少在检索到的行中,有一个值 $15.00,小于 $100.00。为什么不返回 15.00 美元?
我建议删除美元符号并将结果字符串转换为十进制金额。还输入一个小数金额作为限制参数 (
0.00
),这样您就可以比较两个数字,而不是两个字符串。这应该会产生更令人期待的结果:
SELECT MIN(CONVERT(DECIMAL(10,2),REPLACE(BiWeekly_High_Rate,'$','')))
FROM salary_range_by_job_classification
WHERE CONVERT(DECIMAL(10,2),REPLACE(BiWeekly_High_Rate,'$','')) <> 0.00
看看进展如何。如果您比较两个字符串,您将通过使用 MIN
聚合来要求(我认为)第一个值
按字母顺序排列。
SELECT Min(Cast(Replace(biweekly_high_rate, '$', '') AS REAL))
FROM salary_range_by_job_classification
WHERE biweekly_high_rate <> '$0.00'