我正在尝试创建一个在多个表上运行SQL查询并从查询中输出结果表的函数.结果表将有多行.我在这方面遇到了很多困难,而且我已经阅读了建议使用的帖子,RETURN NEXT但我也无法让它工作.根据我的理解RECORD可以使用,因为它采用了输入数据的值.到目前为止,这是我的代码:
CREATE OR REPLACE FUNCTION
most_docs()
RETURNS
SETOF RECORD
AS $$
DECLARE
result RECORD;
BEGIN
CREATE VIEW MOSTDOC AS
SELECT P.country, COUNT(P.country) AS cnt
FROM Producer P, Movie M, ProducerMovie PM
WHERE M.title = PM.title
AND M.year = PM.year
AND P.name = PM.name
AND M.genre = 'Documentary'
GROUP BY P.country;
SELECT DISTINCT M.country INTO result
FROM MOSTDOC M
WHERE M.cnt = (SELECT MAX(M.cnt)
FROM MOSTDOC M);
RETURN result;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.谢谢.
---------- Word …
我需要实现两个排名查询 [rank(k)和select(r)]。但在开始之前,我需要弄清楚这两个函数是如何工作的。
据我所知,rank(k)返回给定 key 的等级k,并select(r)返回给定 rank 的键r。
所以我的问题是:
1.) 如何计算 AVL(自平衡 BST)中节点的等级?
2.) 是否可能有多个键具有相同的等级?如果是这样,什么会select(r)回来?
我将包含一个示例 AVL 树,如果它有助于回答问题,您可以参考它。

谢谢!
我正在尝试在PostgreSQL中编写两种类型的存储过程.从我的理解Postgre只有功能.我想知道是否有人可以查看我的代码并提供指针.另外,我不熟悉是否使用了间距/新的命令行.
第一个函数需要从用户获取输入并将其添加到表中. 假设我们有一个表名为"Car",其属性为"model"和"year".这是一个正确的存储功能,可以将新车添加到桌面吗?
CREATE OR REPLACE FUNCTION
addto_car(model IN Car.model%type, year IN Car.year%type)
RETURNS
void
AS $$
BEGIN
INSERT INTO Car VALUES(model, year);
END;
$$ LANGUAGE plpgsql; (#Is this correct? I'm using postgresql 9)
Run Code Online (Sandbox Code Playgroud)
----------正在进行中的代码 功能1
CREATE OR REPLACE FUNCTION
addto_car(In model Car.model%type, IN year Car.year%type)
AS $$
BEGIN
INSERT INTO Car VALUES(model, year);
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
这现在有效!(将值模型和年份插入Car).
我有一个treeort函数,它执行两个不同的任务,每个任务都有自己的时间复杂度.我想出了平均值.两个任务的案例时间复杂度,但我如何找到算法的整体复杂性.
例如,算法接收"n"个键x的随机列表:
Sort(x):
Insert(x):
#Time complexity of O(nLog(n))
Traverse(x):
#Time complexity of O(n)
Run Code Online (Sandbox Code Playgroud)
我只是将两个复杂性加在一起给我O(n + nLog(n))或者我是否采取主导任务(在本例中为Insert)并最终得到总体复杂度为O(nLog(n))