2

我有一个包含 2 列关键字的表格,我需要计算它们的出现次数。我可以单独做,一次一列,然后加上总数,定期计数,

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

和 kw2 一样,但我需要直接从数据库中获取信息。

所以表是这样的:

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:对不起,我忘记了,但以防万一,我正在开发 Oracle 10g

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 All将两列数据合并为一列然后计算出现次数

 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 回答