2

キーワードを含む2つの列を持つテーブルがあり、それらの発生をカウントする必要があります。一度に1列ずつ個別に実行し、後で定期的に合計を追加することができます。

select count (id), kw1 from mytable group by kw1

kw2についても同じですが、dbから直接情報を取得する必要があります。

したがって、テーブルは次のようになります。

id       kw1          kw2
1         a            b
2         c            d 
3         b             
4         e            a

つまり、各キーワードが何回使用されたかを取得するという考え方なので、結果は次のようになります。

'a'  2
'b'  2
'c'  1
'd'  1
'e'  1

前もって感謝します

PS:申し訳ありませんが、忘れてしまいましたが、念のため、Oracle10gに取り組んでいます。

4

3 に答える 3

3

これを試して:

SELECT kw, COUNT(kw)
FROM
(
   SELECT "kw1" AS kw FROM table1
   UNION ALL 
   SELECT "kw2"       FROM table1
) t
WHERE kw IS NOT NULL
GROUP BY kw
ORDER BY KW;

SQLフィドルデモ

これはあなたに与えるでしょう:

KW   COUNT(KW)
a       2
b       2
c       1
d       1
e       1
于 2012-12-03T11:52:13.240 に答える
2

このように見えるはずです。

SELECT kw,SUM(kw)
FROM(
(SELECT kw1 AS kw, COUNT(kw1) 
FROM table
WHERE kw1 IS NOT NULL GROUP BY kw1) skw1

UNION ALL

(SELECT kw2, COUNT(kw2) 
FROM table
WHERE kw2 IS NOT NULL GROUP BY kw2) skw2
)
GROUP BY kw
ORDER BY kw

以前の回答では、UNION を実行した後に SUM 操作を実行しません。

于 2012-12-03T12:27:47.320 に答える
0

union All2 つの列のデータを 1 つの列に結合し、出現回数をカウントするために使用します

 SELECT cnt, COUNT(cnt)
    FROM
    (
       SELECT kw1 AS cnt FROM table
       UNION ALL 
       SELECT kw2       FROM table
    ) t
 WHERE cnt IS NOT NULL
GROUP BY cnt
ORDER BY cnt;
于 2012-12-03T11:54:10.643 に答える