繁体   English   中英

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

[英]Using Subqueries to get a percentage from a number of SQL columns

我有一个带有“目标”表的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)  

有人可以指导我寻求更好的方法吗?

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;

我不知道Oracle Apex,但是下面的查询是标准SQL,可以在Oracle和大多数其他RDBMS中运行:

select 
  count(*) as total,
  count(case when g_y_loc between 0 and 5 then 1 end) as cnt_pos,
  count(case when g_y_loc between -5 and 0 then 1 end) as cnt_neg,
  count(case when g_y_loc between 0 and 5 then 1 end) / count(*) * 100 as prz_pos,
  count(case when g_y_loc between -5 and 0 then 1 end) / count(*) * 100 as prz_neg
from goals;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM