使用子查询从多个SQL列中获取百分比

时间:2017-05-20 20:31:44

标签: sql oracle

我有一个带有'目标'的oracle数据库缺血症。表,该表有5列:

G_ID - Int  
M_ID - Int  
G_Method - Text  
G_X_Loc - Int   
G_Y_Lo - Int  
G_Time - Int  

G_X_Loc和G_Y_Loc是-5和+5之间的整数。作为一个百分比,我需要计算出Y0到Y + 5之间的得分数目以及Y0和Y-5之间得分的数量。

到目前为止,我已设法使用以下查询告诉我0到+5的数字,即56,但我努力将其作为总行数的百分比(107) )。

Select COUNT(G_ID) AS Y_POS_GOALS  
FROM GOALS  
WHERE G_Y_LOC IN (Select G_Y_LOC  
FROM GOALS  
WHERE G_Y_LOC BETWEEN 0 AND 5)  

有人能给我一个更好的方法来引导它吗?

2 个答案:

答案 0 :(得分:3)

SELECT AVG( CASE WHEN g_y_log >= 0 THEN 100 ELSE 0 END ) AS g_y_positive_percentage,
       AVG( CASE WHEN g_y_log <= 0 THEN 100 ELSE 0 END ) AS g_y_negative_percentage
FROM   goals;

答案 1 :(得分:1)

我不了解Oracle Apex,但下面的查询是标准SQL,并且在Oracle和大多数其他RDBMS中运行:

$(document).ready(function(){

  var text = $("p");
  var overlay = $(".someYellowOverlay").parent();
  var flag = false;

  $(document).scroll(revealTextOnScroll);

  function revealTextOnScroll() {
    var scrollPos = $(document).scrollTop();
    var targetPos = $("header").offset().top;

    if (scrollPos >= 250 && flag === false) {
      flag = true;
      revealText();
    } else if (scrollPos < 250) {
      flag = false;
      text.css("display", "none");
      overlay.children().css("transform-origin", "left center");
    }

    function revealText() {

      var delayBetweenLines = 2000/overlay.length;

      for(i=0;i<overlay.length;i++){

        overlay.eq(i).children().first().addClass("someAnimation")

          .delay((i*delayBetweenLines)+250).queue(function(next){
          $(this).css("transform-origin", "right center");
          next();
        })
          .delay((i*delayBetweenLines)+125).queue(function(next){
          $(this).next().css("display", "block");
          next();
        })
          .delay((i*delayBetweenLines)+250).queue(function(next){
          $(this).removeClass("someAnimation");
          next();
        })

      }
    }
  }
});