【问题标题】:Create a stored procedure to populate a table with one row-Yearly and Monthly Averages创建一个存储过程来填充具有一行的表 - 年平均值和月平均值
【发布时间】:2021-03-18 17:08:31
【问题描述】:

我创建了一个存储过程来填充日志表。我在使用列 H 和 I 的语法时遇到问题。我的语法与月度和年度平均值有关吗?我的问题似乎与那些代码行有关。

输出行 存储过程

   DELIMITER //
    CREATE PROCEDURE populate()
    BEGIN
    DECLARE NoEmpvar INT;
    DECLARE NoDeptvar INT; 
    DECLARE locregion1var INT; 
    DECLARE locregion2var INT; 
    DECLARE locregion3var INT; 
    DECLARE totalsalesvar DECIMAL(10,2); 
    DECLARE avgsalesvar DECIMAL(10,2); 
    DECLARE avgsalesmovar DECIMAL(10,2); 
    DECLARE avgsalesyrvar DECIMAL(10,2);
    
    SELECT COUNT(*) INTO NoEmpvar FROM  emp; 
    SELECT COUNT(*) INTO NoDeptvar FROM dept;
    SELECT COUNT(*) INTO locregion1var FROM location WHERE regionid=1; 
    SELECT COUNT(*) INTO locregion2var FROM location WHERE regionid=2; 
    SELECT COUNT(*) INTO locregion3var FROM location WHERE regionid=3; 
    SELECT COUNT(*) INTO totalsalesvar FROM sales;
    SELECT AVG(salesamt) INTO AvgSale FROM sales;
    SELECT AVG(salesamt) INTO avgsalesmovar FROM sales WHERE month(salesdate);
    SELECT AVG(salesamt) INTO avgsalesyrvar FROM sales WHERE year(salesdate);
INSERT INTO Log(NoEmp, NoDept, LocReg1, LocReg2, LocReg3, TotSales, AvgSale, AvgSaleMo, AvgSaleYr) 
    VALUES(NoEmpvar,NoDeptvar,locregion1var,locregion2var,locregion3var,totalsalesvar,avgsalesvar,avgsale smovar,avgsalesyrvar);
    END //

【问题讨论】:

  • 如果语法有问题,查询根本不会运行。他们正在执行。该表中是否有任何行的销售日期在当前月份和年份为NOW()?如果没有匹配的行,则 AVG() 返回 NULL。试试SELECT COUNT(*) INTO @nowcount FROM sales WHERE month(salesdate)=month(NOW()) AND year(salesdate)=year(NOW()); 然后程序运行后,如果没有匹配的行,会话变量@nowcount将为0。
  • 哦,我明白了。我在错误的上下文中使用了 NOW。我根本不需要那种说法。我的销售数据涵盖 2016 年和 2017 年,因此我需要获得这几个月的平均值。

标签: mysql sql syntax


【解决方案1】:

也许您在本月或本年的销售表中没有任何销售额? 如果你有信心这样做,也许就跑吧

从销售中选择不同的月份(销售日期)

同时运行

选择月份(now())

然后看看你的数据有什么不同吗?

【讨论】:

  • 谢谢,我现在就试试。我刚刚意识到我没有现在的数据。我的销售数据涵盖 2016 年和 2017 年。
  • 很高兴为您提供帮助!有时从桌子上拉出来很容易错过这样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多