【问题标题】:An oracle sql query to find value from the attributes从属性中查找值的 oracle sql 查询
【发布时间】:2016-07-06 23:50:41
【问题描述】:

假设我在 oracle 数据库中有下表“玩家”:

  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,即拥有最多得分手的国家的所有击球手完成的总得分。 (在这种情况下,最大得分手是 萨钦。所以查询应该返回:c_id = 203, runs = 14900)。

我只能找到最高得分手和他所属的国家。查询: 选择 c_id,从播放器运行 where runs = (select max(runs) from player); 这样做。但是,我无法继续进行。

【问题讨论】:

  • 您应该尝试解决问题。
  • 我只能找到击球手的最大得分手。选择 c_id,从播放器运行 where runs = (select max(runs) from player);我无法继续。

标签: sql oracle


【解决方案1】:

当你需要聚合函数的条件时,你必须使用子查询或有子句。 这总是返回一行,但是当多于一组的总数相同时,这是错误的:

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))
;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多