繁体   English   中英

一个oracle sql查询,用于从属性中查找值

[英]An oracle sql query to find value from the attributes

假设我在oracle数据库中有以下表'player':

  P_ID P_NAME       C_ID      DEBUT      MATCH       RUNS

   101 amla          204       2003        190       5000
   102 mushi         200       2001        240       7500
   103 sakib         200       1999        150       5000
   104 ricky         205       1993        180       7000
   105 sachin        203       1990        250       8000
   106 yuvi          203       1999        150       6900

我需要一个查询来显示c_id,该国所有击球手的总奔跑得分最高。 (在这种情况下,最大跑步得分手是sachin。因此查询应返回:c_id = 203,跑步= 14900)。

我只能够找到最大的得分手和他所属的国家。 查询:选择c_id,从播放器处运行,其中runs =(从播放器中选择max(runs)); 那样做。 但是,我无法继续进行。

当需要聚集函数条件时,必须使用子查询或having子句。 此返回值始终为一行,但是如果多于一组的总数相同,那就是错误的:

SELECT * 
FROM (
  SELECT c_id, Sum(runs) total 
  FROM player 
  GROUP BY c_id
  ORDER BY total DESC 
) WHERE ROWNUM =1;

但你可以使用这个:

SELECT c_id, Sum(runs) total 
FROM player 
GROUP BY c_id 
HAVING Sum(runs) = (
  SELECT Max(t) from (
    SELECT Sum(runs) t 
    FROM player 
    GROUP BY c_id))
;

暂无
暂无

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

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