【发布时间】:2018-12-02 20:49:55
【问题描述】:
我正在寻求有关我在 pgAdmin 4 中尝试执行的过程的帮助。我有一个名为“sales”的表。 属性是; saleId(主键)、saleUnitprice(INT)、saleQuantity(INT)、saleTotal(INT)、saleDate(DATE)、prId(products表的外键)、spId(salesperson表的外键)
我有第二个表,名为“saletally”,我希望用每个销售人员每月的总销售额来填充它。
获取总数的 SQL 是
SELECT spid,
SUM(saletotal)
FROM public."sales"
WHERE EXTRACT(MONTH from saledate) = EXTRACT(MONTH from current_date)
GROUP BY spid;
这会返回每个销售人员的一些记录及其当月的总销售额。我正试图弄清楚如何将这些信息放在“销售”表中。
我希望以
结束 stID stTotal spID stMonth
------ --------- ------ ----------
st1 800 sp1 January
st2 900 sp2 January
st3 900 sp3 January
st4 950 sp1 February
st5 800 sp2 February
st6 950 sp3 February
我以前没有在 SQL 中做过如此复杂的事情,我认为我需要在 PostgreSQL 中将其作为一个函数来完成。到目前为止,基于函数的语法是我所管理的;
CREATE OR REPLACE FUNCTION totalSales ()
RETURNS integer AS $totalsales$
declare
stId_var varchar(4) := stId +1,
stTotal_var := SELECT SUM(saletotal) FROM public."sales" WHERE EXTRACT(MONTH from saledate) = EXTRACT(MONTH from current_date),
spId_var := SELECT spID FROM public.”sales”,
stMonth_var = EXRACT(MONTH from current_date);
BEGIN
Insert INTO public.”salestally”(stId, stTotal, spId, stMonth)
VALUES (stId_var, stTotal_var, spId_var, stMonth_var)
RETURN totalsales;
END;
$totalsales$ LANGUAGE plpgsql;
我认为那里需要有一个循环。如果有人可以提供帮助或者可以为我指出一个好的教程的方向,我将不胜感激。 谢谢
【问题讨论】:
标签: sql postgresql plpgsql