聚合操作oracle

时间:2015-09-27 18:28:02

标签: sql oracle

我有两张桌子,我需要找到价值最高的人。

TABLE1

NAME           ID
--------------- ---------------
  MIKE          101
  MIKE          102
  BETTY         103
  BETTY         104
  BETTY         105
  TIM           106

TABLE2

ID                VALUE
--------       --------------
101            12
102            10
103            20
104            20
105            10
106             5

我可以写一个select语句,它会给出名称和值的结果:

  SELECT name, value
    FROM table1, table2
    WHERE table1.id = table.id;
  NAME    VALUE
 -----   ----------
  MIKE          12
  MIKE          10
  BETTY         20
  BETTY         20
  BETTY         10
  TIM           5

现在我需要聚合具有相同名称的行的值,我无法弄明白。我会以正确的方式去做吗?

2 个答案:

答案 0 :(得分:2)

请试试这个:

select a.name,max(b.value) as value
from table1 a
inner join table2 b on a.id = b.id
group by a.name

无论如何,你在问题中标记了mysql和oracle。幸运的是,这个sql兼具。但是你必须删除这两个标签中的一个,以确保你使用哪个dbms。

答案 1 :(得分:1)

使用此..由于您的列名称是唯一的,因此您不需要任何别名。

select name, max(value) as MaxValue
from table1 
inner join table2 on table1.id = table2.id
group by name