提问人:Sharon R. 提问时间:6/3/2023 最后编辑:Sharon R. 更新时间:6/4/2023 访问量:182
为什么使用 DBeaver 和 Postgres 的 SQL 代码中的“ROUND(variable)”不起作用?
Why is 'ROUND(variable)' not working in my SQL code using DBeaver and Postgres?
问:
我正在学习 SQL,并且正在 Windows 10 上使用 Postgres 15 开发 DBeaver。我正在尝试计算 Codecademy 给我的问题。在这里:
/该奖项颁发给拥有最小规模的团队 2010 年的“每次获胜成本”。每次获胜的成本由以下因素决定 团队的总工资除以 在给定的年份获胜。请注意,我们决定查看 只是 2010 年的团队,因为当我们找到这个奖项时 纵观所有年份,我们发现由于通货膨胀, 1900 年代的球队每场胜利花费的钱要少得多。我们 以为在2010年看所有球队 给出了一个更有趣的统计数据。/
这是我的代码:
WITH total_salary AS
(
SELECT
SUM(salaries.salary) AS "salary_sum",
teams.name AS "team_name",
salaries.yearid AS "year_id",
teams.w AS "wins"
FROM salaries
JOIN teams
ON salaries.team_id = teams.id
WHERE salaries.yearid = 2010
GROUP BY
teams.name, teams.w, salaries.yearid
ORDER BY
teams.w DESC
),
cost_per_win_raw AS
(
SELECT
(salary_sum / wins) AS "cost_per_win_num"
FROM total_salary
)
SELECT
ROUND(cost_per_win_num, 2) AS "cost_per_win"
FROM cost_per_win_raw
GROUP BY cost_per_win
ORDER BY cost_per_win DESC;
我的问题是为什么 ( ROUND(cost_per_win_num), 2) AS “cost_per_win” 不起作用? 每次它都会向我抛出这个错误:
SQL Error [42883]: ERROR: function round(double precision, integer) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 448
注意:teams.w 是 smallint,salaries.salary 是双精度。
答: 暂无答案
评论
CAST
ROUND(cost_per_win_num::numeric, 2)
double precision
integer
select 1/2; 0
select pg_typeof(1/2); integer
salary_sum / wins
salary
wins
CAST
integer
CAST