PLSQL。在选择内选择百分比时声明变量

问题描述 投票:0回答:2

我是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.

如果你能帮我弄清楚我哪里做错了,那就非常感谢了。谢谢您的帮助。

oracle select plsql declaration percentage
2个回答
0
投票

简单的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)

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;
© www.soinside.com 2019 - 2024. All rights reserved.