2017-04-20 1 views
0

en essayant d'obtenir des ventes totales pour un zip spécifique; J'en ai fait quelques-uns, mais je n'arrive pas à obtenir le total et il me manque quelque chose. Les tables sont les clients qui ont le chiffre d'affaires brut, qui a le montant brut de la vente.pl/sql besoin d'aide non-respect

Celui-ci s'exécute complet mais pas total; alors qu'est-ce qui me manque?

Aussi pour le plaisir de demander comment pourrais-je modifier cela pour me demander dans une interface, où je peux entrer le zip? J'ai commencé ça aussi mais; encore une fois, je reçois la question quand j'insère le zip ça me donne des erreurs.

SET SERVEROUTPUT ON 

DECLARE 
    V_SALES NUMBER (10,2); 
    V_ZIP VARCHAR2(5) NOT NULL := 48228; 

BEGIN 
    SELECT SUM(S.GROSS_SALE_PRICE) -- GROUP FUNCTION 
    INTO V_SALES 
    FROM SALES S 
    WHERE CUST_ID = V_ZIP; 

    DBMS_OUTPUT.PUT_LINE ('TOTAL SALES FOR ZIP 48228, IS'|| TO_NUMBER(V_SALES)); 
END; 
/
+2

'Où CUST_ID = V_ZIP'? Voulez-vous dire joindre les deux tables dans le cadre de la requête? Vous n'avez pas inclus les structures de la table donc vous ne pouvez pas être sûr de ce que sera la condition de jointure (bien que vous puissiez deviner ...) Vous ne savez pas non plus pourquoi vous utilisez PL/SQL ici, ou pourquoi vous mélangez des données types, ou la conversion d'un nombre à un nombre .... –

+0

Non, en fait le zip fait partie de la table des clients, et le montant brut de la vente fait partie de la table des ventes. donc, je devrais combiner la table des ventes avec la table des clients, pour obtenir le total des ventes à partir d'un zip spécifié. J'avais besoin de faire un bloc anonyme pl/sql donc c'est pourquoi j'utilise PL/sql dans le développeur. Mon initiale était d'utiliser le curseur, mais essayait de trouver loin pour le simplifier. – Noir

+0

Mais votre code n'inclut pas du tout la table client. Vous semblez savoir qu'il devrait. Avez-vous essayé de rejoindre les deux tables? Pourquoi avez-vous pensé que vous deviez en faire un bloc anonyme? –

Répondre

0

Essayez d'inclure un groupe par clause

SET SERVEROUTPUT ON 
DECLARE 
    V_SALES NUMBER (10,2); 
    V_ZIP VARCHAR2(5) NOT NULL := 48228; 

    BEGIN 
SELECT SUM(S.GROSS_SALE_PRICE) -- GROUP FUNCTION 
    INTO V_SALES 
    FROM SALES S 
    WHERE CUST_ID = V_ZIP 
    GROUP BY CUST_ID; 
DBMS_OUTPUT.PUT_LINE ('TOTAL SALES FOR ZIP 48228, IS'|| TO_NUMBER(V_SALES)); 
END;