所以我有一个AbstractID,SentenceID,WordID和Word的大表。有些单词显示在多个文件中。我想计算每个单词显示多少个文件,然后用Word和Count创建一个新表。以下是我的数据。
我的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 - “缺少表达”
*原因:
*动作:“
我该如何纠正?感谢。
答案 0 :(得分:1)
您的查询过于复杂。错误是因为您的外部where
子句没有条件;你选择了多个东西,但这不是正确的,但不能将它们与任何东西进行比较。而且您不需要将查询括在一组括号中。
你可以这样做:
CREATE TABLE WORDLIST (WORD, TOTALCOUNT) AS
SELECT WORD, COUNT(DISTINCT FILEID)
FROM ASSIGNMENT2
GROUP BY WORD;
没有必要对查询进行排序,因为它不会影响将来对新表的查询 - 您仍然需要对这些查询进行排序,因为表中没有固有的行顺序。 (我认为order by
会在create-as语句中导致错误,但无法立即检查它。
创建一个表来保存这些信息似乎很奇怪,因为它会很快过时。也许你真的想要一个观点?