Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLPlus-获取不带聚合查询的记录数_Sql_Oracle - Fatal编程技术网

SQLPlus-获取不带聚合查询的记录数

SQLPlus-获取不带聚合查询的记录数,sql,oracle,Sql,Oracle,这是一份学校作业,上面有以下命令: 1.没有嵌套查询 2.没有聚合查询 基本上,我需要获得在一个表中出现3次或更多次的所有名称 例如,如果我的表格如下所示: uniqueid |name | some other stuff ----------------------- 0 |Bob | ... 1 |Bob | ... 2 |Bob | ... 3 |Tim | ... 4 |Tim | ... 5

这是一份学校作业,上面有以下命令:
1.没有嵌套查询
2.没有聚合查询

基本上,我需要获得在一个表中出现3次或更多次的所有名称

例如,如果我的表格如下所示:

uniqueid |name | some other stuff
-----------------------
0        |Bob  | ...
1        |Bob  | ...
2        |Bob  | ...
3        |Tim  | ...
4        |Tim  | ...
5        |John | ...
6        |John | ...
7        |Bill | ...
8        |Tim  |
我期望的输出是:

name
-----
Bob 
Tim 
这对于聚合查询来说是微不足道的:

SELECT name
FROM table
GROUP BY name
HAVING COUNT(*) >= 3;

但无论出于何种原因,该作业明确禁止我使用(我认为是)最适合该工作的工具,我也不知道该如何完成。

您可以使用
行数
分析功能:

SELECT DISTINCT name
FROM( SELECT name
           , row_number() over (partition by name order by name ) as RN
      FROM tbl )
      WHERE RN > 2

您可以使用
行数
分析功能:

SELECT DISTINCT name
FROM( SELECT name
           , row_number() over (partition by name order by name ) as RN
      FROM tbl )
      WHERE RN > 2

没有聚合函数,没有分析函数,没有嵌套查询,适用于您可能获得的任何Oracle。:)

从tbl中选择不同的名称
其中级别=3
按先前的rowid连接

没有聚合函数,没有分析函数,没有嵌套查询,适用于您可能获得的任何Oracle。:)

从tbl中选择不同的名称
其中级别=3
按先前的rowid连接

结果证明,他们正在寻找的解决方案是对其进行暴力:

SELECT DISTINCT t1.name
FROM table t1, table t2, table t3
WHERE t1.name = t2.name AND
t2.name = t3.name AND
t1.name = t3.name AND
t1.uniqueid <> t2.uniqueid AND
t2.uniqueid <> t3.uniqueid AND
t1.uniqueid <> t3.uniqueid;
选择DISTINCT t1.name
来自表t1、表t2、表t3
其中t1.name=t2.name和
t2.name=t3.name和
t1.name=t3.name和
t1.uniqueid t2.uniqueid和
t2.uniqueid t3.uniqueid和
t1.uniqueid t3.uniqueid;

结果证明,他们正在寻找的解决方案就是对其进行暴力:

SELECT DISTINCT t1.name
FROM table t1, table t2, table t3
WHERE t1.name = t2.name AND
t2.name = t3.name AND
t1.name = t3.name AND
t1.uniqueid <> t2.uniqueid AND
t2.uniqueid <> t3.uniqueid AND
t1.uniqueid <> t3.uniqueid;
选择DISTINCT t1.name
来自表t1、表t2、表t3
其中t1.name=t2.name和
t2.name=t3.name和
t1.name=t3.name和
t1.uniqueid t2.uniqueid和
t2.uniqueid t3.uniqueid和
t1.uniqueid t3.uniqueid;

表是否有唯一键?是的,有唯一键表是否有唯一键?是的,有唯一键在添加另一个名为“tim”的行后重试。您的意思可能是“rn=3”\@beherenow:只需添加
distinct
就足够了。请在添加另一行名为“tim”后再试。您的意思可能是“rn=3”\@beherenow:只需添加
distinct
就足够了。其他答案值得考虑。其他答案值得考虑。