2

Oracle データベースに次のデータがあります。

Name    Place     Color
------- --------- --------
John    Paris     Blue
John    Miami     Blue
Ryan    Boston    Red
Ryan    Boston    Red
Jim     Miami     Blue
Ryan    Oslo      Red
Jason   Rome      Green
Jim     Paris     Blue
Jason   Rome      Green
Jim     Paris     Blue
Ryan    Boston    Red

2 つの列が同じ (名前/場所) である場合は重複除去し、3 番目の列でカウントする必要があります。ネストされた選択で 2 回グループ化しようとしていますが、ORA-00933 エラーが発生し続けます。

select Color, count(Color)
from
(
    select TO_CHAR(Name)||'-'||(Place) as unique_ident from mytable
    group by TO_CHAR(Name)||'-'||(Place)
) as inline
group by Color


私は次のようなものを返します

Blue   4
Red    2
Green  1

どんな助けでも大歓迎です。

4

3 に答える 3

2

私はあなたがこのようなものを探していると思います:

SELECT Color, COUNT(DISTINCT name || '-' || place) ColorCnt
FROM yourtable
GROUP BY Color

その結果:

COLOR   ColorCnt
-----------------
Green   1
Blue    4
Red     2
于 2013-05-31T23:14:17.750 に答える
0

これはあなたが望む結果を与えませんか?

select TO_CHAR(Name)||'-'||(Place) , color, count(*) as color_count
from mytable
group by name, place, color
于 2013-05-31T23:12:37.933 に答える
0

sgeddes による回答は問題ありません。クエリの問題は、外側のクエリが を参照colorしていることですが、内側のクエリにはありません。これを修正するには、次のようにします。

select Color, count(Color)
from (select TO_CHAR(Name)||'-'||(Place) as unique_ident, color
      from mytable
      group by TO_CHAR(Name)||'-'||(Place), color
     ) as inline 
group by Color;

しかし、count(distinct)おそらく処方が好ましい。

于 2013-05-31T23:24:29.630 に答える