0

次の表があります。

TKG   hour  CAP SWITCH  CALLS
AAA   7     45  HH      56
AAA   8     35  HH      76
AAA   9     25  HH      43
BBB   7     32  LL      5
BBB   8     43  LL      65
BBB   9     434 LL      65
CCC   7     54  JJ      43
CCC   8     564 JJ      43
CCC   9     54  JJ      65
ddd   7     10  MM      4
ddd   8     10  MM      3
ddd   9     10  MM      5

出力が次のようになるように、最大​​ CAP を使用して TKG で注文する必要があります。

TKG hour    CAP SWITCH  CALLS
AAA 7       45  HH      56
BBB 9       434 LL      65
CCC 8       564 JJ      43
ddd 7       10  MM      4

どうやってやるの?

4

5 に答える 5

4

Sql サーバー 2005 以降を使用している場合はrow_number()、 andpartition by TKGとを使用できorder by cap descます。

select TKG, hour, CAP, switch, Calls
from 
(
  select *,
    row_number() over(partition by TKG order by cap desc) rn
  from yourtable 
) t1
where rn = 1

デモで SQL Fiddle を参照してください

結果:

| TKG | HOUR | CAP | SWITCH | CALLS |
-------------------------------------
| AAA |    7 |  45 |     HH |    56 |
| BBB |    9 | 434 |     LL |    65 |
| CCC |    8 | 564 |     JJ |    43 |
| ddd |    7 |  10 |     MM |     4 |
于 2012-12-21T12:01:24.973 に答える
1

これはオラクルで動作します

  select TKG,hour,CAP,SWITCH,CALLS from (select a1.*,rank over (partition  by TKG, order by CAP) rnk 
    from table a1) where rnk=1;
于 2012-12-21T11:56:38.380 に答える
0
Select a.* from Tab a
join
(
Select TKG,max(CAP) as CAP from Tab Group by TKG
) b on a.TKG=b.TKG and a.CAP=b.CAP
于 2012-12-21T11:58:25.763 に答える
0

これを試して

 select * from table 
 where  cap=(select max(cap) from table group by tkg)
 group by tkg

また

select top 1 * from table
 order by cap desc

また

 select * from table
 order by cap desc
  limit (1,1)
于 2012-12-21T11:54:21.720 に答える
0

最大値を取得してサブクエリに入れ、CAP val の内部結合でこれにリンクします その他

SELECT TKG, hour,  CAP, SWITCH,  CALLS
INNER JOIN --GET THE MAX CAP FOR EACH TKG
(SELECT TKG, MAX(CAP) AS MaxCAP
FROM myTable
GROUP BY TKG
) AS MaxCap
ON MyTable.Cap= MaxCap.MaxCAP
于 2012-12-21T12:12:02.060 に答える