【发布时间】:2021-02-14 01:55:18
【问题描述】:
我想像这样返回一个特定的表。
+-------------+------+-------+--------------+
| full_name | mark | grade | good_student |
+-------------+------+-------+--------------+
| mike smith | 42 | F | N |
| sam logan | 90 | A | Y |
| TOTAL MARKS | 132 | NULL | NULL |
+-------------+------+-------+--------------+
谁能告诉我如何为每一行的每一列设置特定数据。例如,good_student 是我使用逻辑设置的自定义数据,如果标记大于 50,则为Y,否则为N。
以及在末尾返回一个自定义行,其中包含TOTAL MARKS,这是标记的总和。
我正在尝试了解如何编写自己的 if 语句并返回自定义设置的数据行,但我迷路了。 请不要更改我在 PLPGSQL 函数中提供的 SQL 选择语句。我故意这样做是为了更好地理解 PLPGSQL 部分。
CREATE TABLE students (
id integer primary key,
first_name text,
last_name text,
mark integer,
grade text
);
INSERT INTO students (id, first_name, last_name, mark, grade) VALUES
(1, 'mike', 'smith', 42, 'F'),
(2, 'sam', 'logan', 90, 'A');
CREATE TYPE ClassRecord as (
full_name text,
mark integer,
grade text,
good_student char(1) -- Y if mark above 50, N if mark below 50
);
CREATE OR REPLACE FUNCTION
generateClassRecord()
RETURNS ClassRecord
AS $$
BEGIN
FOR ROW IN SELECT * FROM students;
-- Unsure how to access things now and return specific data
END
$$ language plpgsql
【问题讨论】:
标签: sql database postgresql plpgsql