2014-04-05 50 views
0

所以我有一个AbstractID,SentenceID,WordID和Word的大表。有些词显示在多个文件中。我想统计每个单词显示多少个文件,然后用Word和Count创建一个新表。以下是我的一部分数据。 enter image description here如何从现有表格中创建表格?

我的SQL查询低于:

CREATE TABLE WORDLIST(WORD, TOTALCOUNT) AS 
(
    SELECT WORD FROM ASSIGNMENT2 WHERE 
    (
    SELECT WORD, COUNT(*) FROM (select DISTINCT FILEID, WORD FROM ASSIGNMENT2) 
    GROUP BY WORD ORDER BY COUNT(*) DESC)); 

这是给我一个错误: “错误报告: SQL错误:ORA-00936:缺少表达 00936. 00000 - “失踪表达” *原因:
*操作:“

如何更正此问题?谢谢。

回答

1

你比较烦琐的查询。错误是因为你的外部where子句没有条件;你选择了多种东西,这是不正确的,但没有把它们与任何东西进行比较。而且您不需要将查询放在一组括号中。

你可以这样做:

CREATE TABLE WORDLIST (WORD, TOTALCOUNT) AS 
SELECT WORD, COUNT(DISTINCT FILEID) 
FROM ASSIGNMENT2 
GROUP BY WORD; 

没有意义订购查询,因为它不会影响对新表日后查询 - 你还是要订购的,因为有行没有内在顺序在表内。 (我认为order by将在create-as语句中导致错误,但不能立即检查)。

创建一个表来保存这些信息似乎很奇怪,因为它会很快过时。也许你真的想要一个观点?

+0

我点了它,因为我想删除最高和最低频率的单词。 –

+0

现在它给了我这个错误消息:'在命令行出错:8列:14 错误报告: SQL错误:ORA-00955:名称已被现有对象使用 00955. 00000 - “名称已被使用由一个现有的对象“ *原因: *行动:'我试图做到这一点,现在确定如果SQL已经创建了一个WORDLIST表。你知道我如何检查吗?对不起,我是这个新手。 –

+0

@ Q-ximi - 它不会创建你的问题中的表格,但也许你在此之前尝试过。如果除了表格名称具有该名称,则选中'select object_type,object_name from user_objects where object_name ='WORDLIST'';或者只是在SQL * Plus中“描述wordlist”来查看当前表定义。如果您需要,而且您确定,则可以“放下表格词表”。确保你知道你将要放弃什么。 –