首页 > 解决方案 > SQL中的平均和内连接

问题描述

我对 SQL 很陌生,所以我问这个问题。我正在尝试计算有保修和不保修的物品的平均交货时间。保修可以显示为 1 或 NaN,因此该列不是 NUMERIC。我写了我认为代码应该看起来的样子,但遇到了错误。

SHIPPING_TABLE:

(复合键)

Item_id
Basket_id
seller_id
warranty
postage_class 

第一类:

(全部作为主键)

Item_id
Basket_id
seller_id
warranty
postage_class
delivery_time

create table AVG_DELIVERY_TIME as 
(
    SELECT DELIVERY_TIME AVG 
    ,(DELIVERY_TIME) 
    FROM 
    (
        SELECT SHIPPING_TABLE_LINK.warranty
        ,FIRST_CLASS.DELIVERY_TIME
        FROM FIRST_CLASS
        INNER JOIN SHIPPING_TABLE_LINK 
            ON SHIPPING_TABLE_LINK.warranty = FIRST_CLASS.DELIVERY_TIME
    )
);

错误报告 - ORA-01722:无效号码 01722。00000 -“无效号码” *原因:指定的号码无效。*行动:指定一个有效的数字。

标签: sqloracleinner-joinaverage

解决方案


我相信您可以使用以下代码将保修列中的值更新为 0 而不是 NaN

UPDATE table_name SET保证= 0 WHERE保证=“NaN;

然后,您可以创建新表并将此列指定为数字而不是 varchar。希望有帮助


推荐阅读