die Summe der Werte in PL/Sql
Ich versuche zu Holen PLSQL-Anweisung, um alle in der Liste der Kunden-ID und die Summe des Auftragswertes für jeden einzelnen Kunden. der folgende code ruft mir die korrekte Antwort, aber das Problem ist, dass ich mehrere Kunden mit der gleichen ID und ich brauche die Summe aller Ihrer Reihenfolge Werte unter nur 1 ID ausgegeben und nicht mehrere.mein code ruft mich mehrere Ausgabe für den gleichen Kunden.
Create table sales (customer_ID number(10), product_ID number(10), quantity number(10));
INSERT INTO sales (customer_ID, product_ID, quantity) Values(3,1,23);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(1,2,34);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(1,3,654);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(3,7,32);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(4,3,23);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(3,3,111);
INSERT INTO sales (customer_ID, product_ID, quantity) Values(5,4,6);
Create table products (product_ID number(10), price number(10));
INSERT INTO products (product_ID, price) Values(1,32);
INSERT INTO products (product_ID, price) Values(2,121);
INSERT INTO products (product_ID, price) Values(3,3000);
INSERT INTO products (product_ID, price) Values(4,621);
INSERT INTO products (product_ID, price) Values(5,363);
INSERT INTO products (product_ID, price) Values(6,32);
INSERT INTO products (product_ID, price) Values(7,3);
INSERT INTO products (product_ID, price) Values(8,432);
INSERT INTO products (product_ID, price) Values(9,11);
INSERT INTO products (product_ID, price) Values(10,73);
declare
cursor cur is select unique sales.quantity,products.price,sales.customer_ID
from sales,products
where sales.product_id=products.product_id
order by customer_ID desc;
prod number;
quan number(10);
pri number(10);
c_id number(10);
begin
open cur;
loop
fetch cur into quan,pri,c_id;
exit when cur%notfound;
prod:=pri*quan;
DBMS_OUTPUT.PUT_LINE('customer_id =' || c_id);
DBMS_OUTPUT.PUT_LINE('quantity value =' || quan);
DBMS_OUTPUT.PUT_LINE('price =' || pri);
DBMS_OUTPUT.PUT_LINE('The total value of customer purchases is = ' || prod);
end loop;
close cur;
END
bitte adivse.
- Bitte geben Sie die create table-Anweisung, und stellen Sie sicher, fügen Sie die INSERT into table_name Klausel tot, er insert-Anweisungen. Und, tun Sie wirklich brauchen, zu verwenden
PL/SQL
? Es könnte sein, getan in plainSQL
. PL/SQLLOOP
,row-by-row
ein.k.ein.slow-by-slow
. - änderungen getan und ja ich brauchen, um es durch pl/sql , der code ist fertig, ich brauche nur die Summe der gleichen Kunden-id unter 1 Ausgang
- Was ist die Ausgabe, die Sie erwarten sind, und warum Sie "müssen" zu tun, es in PL/SQL? Bitte aktualisieren Sie Ihre Frage mit dem erwarteten Ausgang.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nur zu verwenden SUMME als Aggregat-Funktion mit GRUPPE VON.
Mit PL/SQL
Durch die Art und Weise, die ganze PL/SQL block der geschrieben werden kann in reinen SQL.
Mit SQL
Update OP will zum filtern von Zeilen basierend auf Benutzereingaben.
In SQL*Plus, du könntest eine variable deklarieren und verwenden Sie es in der filter-Prädikat:
Nein,wir verwenden die oben variable in das filter-Prädikat:
Wenn Sie möchten, tun dies aus einem front-end-Anwendung ist, kannst du die ganze Logik in einem VERFAHREN und akzeptieren Sie die
customer_id
als IN parameter. Und verwenden Sie es in der filter-Prädikat.Versuchen, diese
Tick
mark im Zusammenhang mit der Antwort unten ,die grün werden, und das wird zeigen, Es war hilfreich für Sie. So dass nächste mal, wenn jemand Gesichter das gleiche problem, dann schauen Sie einfach für die akzeptierte Antwort. Gehen Sie bitte über diesen link, um zu verstehen, stackoverflow.com/tourKönnen Sie verwenden, sum () - Funktion, also sowas wie select sum(sales.Menge) anstelle von Umsatz-Menge. Dies wird Ihnen die Gesamtmenge für die customer_id
//deklarieren der Variablen
//überprüfung IF-Bedingung, wenn a nicht gleich b , dann wird a und B Hinzugefügt
BEGINNEN
//Übergabe der Werte für a und b rufen dann den calcul Verfahren werden machen neben.