小编tvg*_*234的帖子

如何使用RECORD在PostgreSQL中返回多行?

我正在尝试创建一个在多个表上运行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 …

sql postgresql

6
推荐指数
1
解决办法
5881
查看次数

如何在AVL树中找到节点的等级?

我需要实现两个排名查询 [rank(k)select(r)]。但在开始之前,我需要弄清楚这两个函数是如何工作的。

据我所知,rank(k)返回给定 key 的等级k,并select(r)返回给定 rank 的键r

所以我的问题是:

1.) 如何计算 AVL(自平衡 BST)中节点的等级?

2.) 是否可能有多个键具有相同的等级?如果是这样,什么会select(r)回来?

我将包含一个示例 AVL 树,如果它有助于回答问题,您可以参考它。

在此处输入图片说明

谢谢!

algorithm binary-tree binary-search-tree

5
推荐指数
1
解决办法
2万
查看次数

PostgreSQL存储过程(函数)的正确语法是什么?

我正在尝试在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).

sql postgresql stored-procedures plpgsql

5
推荐指数
1
解决办法
2666
查看次数

排序算法的平均时间复杂度

我有一个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))

algorithm performance time-complexity

3
推荐指数
1
解决办法
342
查看次数