我是SQL的新手,主要通过YouTube、Google和一些在线任务来学习。我想知道如何最好地执行一个简单的任务,计算出足球场上一方的 "进球 "百分比。我不确定这是否是最好的方法,但我已经尝试过子查询,但也无法找出如何使其与这个工作。就像我说的,还是新手,很想学习新方法。
以下是我一直在尝试使用的方法。通过计算总进球数(不包括中线的进球),然后在第二部分除以这个数字,再乘以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.
如果你能帮我弄清楚我哪里做错了,那就非常感谢了。谢谢您的帮助。
简单的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)
我是这样理解这个问题的。
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;