我有一个包含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
答案 0 :(得分: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;
这会给你:
KW COUNT(KW)
a 2
b 2
c 1
d 1
e 1
答案 1 :(得分: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操作。
答案 2 :(得分: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;