PL/SQL: select 上 select 上的百分比声明变量
PL/SQL: Declaration variable on select within select for percentage
我是 SQL 的新手,主要是通过 YouTube、Google 和一些在线任务学习的。我试图弄清楚如何最好地执行一项简单的任务,以计算出足球场一侧的 'goals' 得分百分比。我不确定这是否是最好的方法,但我尝试过子查询,但也无法弄清楚如何使用它。就像我说的,仍然是新手并且热衷于学习新方法。
以下是我一直在尝试使用的方法。通过计算总进球数(不包括中线的进球数),然后在第二部分将它除以那个数字并乘以 100 得到那一半的百分比。
DECLARE
l_goal NUMBER(3);
BEGIN
SELECT COUNT(y_axis) INTO l_goal
FROM soccer_stats
WHERE y_axis <> 0;
DBMS_OUTPUT.PUT_LINE (SELECT ROUND(COUNT(y_axis)/||l_goal)
FROM soccer_stats
WHERE y_axis < 0);
END;
下面是我尝试进行子查询。
SELECT COUNT(y_axis) FROM soccer_stats
WHERE y_axis <> 0
(SELECT ROUND(COUNT(y_axis)/6*100) FROM soccer_stats
WHERE y_axis < 0)
^-------- '6' was the goal number, but could find a way to automate.
如果您能帮我弄清楚我哪里出错了,将不胜感激。谢谢。
我是这样理解题目的。
DECLARE
l_goal NUMBER(3);
l_pct NUMBER;
BEGIN
-- populate L_GOAL variable
SELECT COUNT(y_axis)
INTO l_goal
FROM soccer_stats
WHERE y_axis <> 0;
-- now use it
SELECT ROUND(COUNT(y_axis) / l_goal * 100)
INTO l_pct
FROM soccer_stats
WHERE y_axis < 0;
DBMS_OUTPUT.PUT_LINE('l_goal = ' || l_goal ||', l_pct = ' || l_pct);
END;
下面的简单 SQL 查询就足够了,
select (yaxiscount/(yaxiscount + nonyaxiscount))*100 yaxispercentage,(nonyaxiscount/(yaxiscount + nonyaxiscount))*100 nonyaxispercentage
from
(SELECT COUNT(y_axis) yaxiscount
FROM soccer_stats
WHERE y_axis >= 0),
(SELECT COUNT(y_axis) nonyaxiscount
FROM soccer_stats
WHERE y_axis < 0)
我是 SQL 的新手,主要是通过 YouTube、Google 和一些在线任务学习的。我试图弄清楚如何最好地执行一项简单的任务,以计算出足球场一侧的 'goals' 得分百分比。我不确定这是否是最好的方法,但我尝试过子查询,但也无法弄清楚如何使用它。就像我说的,仍然是新手并且热衷于学习新方法。
以下是我一直在尝试使用的方法。通过计算总进球数(不包括中线的进球数),然后在第二部分将它除以那个数字并乘以 100 得到那一半的百分比。
DECLARE
l_goal NUMBER(3);
BEGIN
SELECT COUNT(y_axis) INTO l_goal
FROM soccer_stats
WHERE y_axis <> 0;
DBMS_OUTPUT.PUT_LINE (SELECT ROUND(COUNT(y_axis)/||l_goal)
FROM soccer_stats
WHERE y_axis < 0);
END;
下面是我尝试进行子查询。
SELECT COUNT(y_axis) FROM soccer_stats
WHERE y_axis <> 0
(SELECT ROUND(COUNT(y_axis)/6*100) FROM soccer_stats
WHERE y_axis < 0)
^-------- '6' was the goal number, but could find a way to automate.
如果您能帮我弄清楚我哪里出错了,将不胜感激。谢谢。
我是这样理解题目的。
DECLARE
l_goal NUMBER(3);
l_pct NUMBER;
BEGIN
-- populate L_GOAL variable
SELECT COUNT(y_axis)
INTO l_goal
FROM soccer_stats
WHERE y_axis <> 0;
-- now use it
SELECT ROUND(COUNT(y_axis) / l_goal * 100)
INTO l_pct
FROM soccer_stats
WHERE y_axis < 0;
DBMS_OUTPUT.PUT_LINE('l_goal = ' || l_goal ||', l_pct = ' || l_pct);
END;
下面的简单 SQL 查询就足够了,
select (yaxiscount/(yaxiscount + nonyaxiscount))*100 yaxispercentage,(nonyaxiscount/(yaxiscount + nonyaxiscount))*100 nonyaxispercentage
from
(SELECT COUNT(y_axis) yaxiscount
FROM soccer_stats
WHERE y_axis >= 0),
(SELECT COUNT(y_axis) nonyaxiscount
FROM soccer_stats
WHERE y_axis < 0)