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
我可以在Oracle SQL中为另一个查询定义的不同值重复Union Join吗?_Sql_Oracle_Oracle10g_Union - Fatal编程技术网

我可以在Oracle SQL中为另一个查询定义的不同值重复Union Join吗?

我可以在Oracle SQL中为另一个查询定义的不同值重复Union Join吗?,sql,oracle,oracle10g,union,Sql,Oracle,Oracle10g,Union,我有一个查询,返回一组用户基于他们每个节目的分数的十分位数: SELECT prog_code, user_code, user_mark, NTILE(10) over (order by user_mark DESC) DECILE FROM grade_result where user_mark IS NOT NULL and prog_year = '2011' AND prog_code = 'ALPHA' 我需要同时为总共40个不同的prog_代码值运行此语句

我有一个查询,返回一组用户基于他们每个节目的分数的十分位数:

SELECT prog_code,
    user_code,
    user_mark,
  NTILE(10) over (order by user_mark DESC) DECILE
FROM grade_result
where user_mark IS NOT NULL
and prog_year = '2011'
AND prog_code = 'ALPHA'
我需要同时为总共40个不同的prog_代码值运行此语句,这些值可以通过39个联合联接连接在一起,但这似乎效率非常低(我不能将此语句作为单个select语句运行,因为小数将用于所有程序,而不是程序)。有没有一种方法可以让查询作为一个联合对这40个值中的每一个重复(循环?),而不必自己输入每一个

如果有任何用途,我可以在单独的查询或子查询中返回程序代码和rownum:

ROWNUM         PROG_CODE

1              ALPHA
2              BETA
3              GAMMA
4              DELTA
5              ECHO

你能在你的NTILE函数中简单地使用partition子句吗

SELECT prog_code,
    user_code,
    user_mark,
  NTILE(10) over (PARTITION BY prog_code ORDER BY user_mark DESC) DECILE
FROM grade_result
where user_mark IS NOT NULL
and prog_year = '2011';

也许我遗漏了一些东西,但是为什么不在(按程序划分代码顺序按用户标记描述)十分位数上添加一个查询分区子句-
NTILE(10)?我认为您应该考虑使用
按程序划分代码
。如果你需要一份推荐信——这似乎是一份不错的推荐信:就这样!天啊,现在看起来很明显。非常感谢。是的,非常感谢。我对解析函数没有太多的经验,所以我很高兴看到有这么简单的解决方案。