Ich habe versucht, dieses Problem für eine Stunde oder so auszuarbeiten und kann es einfach nicht herausfinden. Darf mich bitte jemand in die richtige Richtung weisen? Ich arbeite mit den Daten aus dem OE-Schema von Oracle SQL Developer.Prozentualen Rabatt auf Oracle SQL Developer berechnen
Ich muss den Produktkategorie-Namen für Produkte anzeigen, die den größten Rabatt in% vom list_price haben.
Dies ist mein Code:
SELECT ct.category_name, ROUND((pi.list_price pi.min_price)*100/pi.list_Price) AS Percent_Discount
FROM oe.product_information pi JOIN oe.categories_tab ct ON pi.category_id = ct.category_id
GROUP BY ct.category_name, ROUND((pi.list_price-pi.min_price)*100/pi.list_Price)
ORDER BY ROUND((pi.list_price-pi.min_price)*100/pi.list_Price) desc;
Here is an image of my results of the query
Die Ergebnisse tatsächlich gehen den ganzen Weg hinunter zu 150ish oder so, die jedes einzelne Produkt enthält.
Meine Frage ist: Wie bekomme ich es, so ist meine Prozentzahl zwei Dezimalstellen, anstatt es in eine ganze Zahl gerundet wird? Ich verstehe, dass ich die runde Aussage verwendet habe, aber ich habe es nur gemacht, weil ohne sie die Zahlen ungefähr 15 Ziffern sind. Denken Sie auch, dass mein Code das Problem richtig beantwortet? Ich denke, ich sollte nur die Top 10 oder 20 Kategorien mit dem größten Rabatt zeigen. Gibt es das überhaupt, könnte ich das tun, anstatt alle aufzuzählen?
Vielen Dank noch einmal! Nur zur Klarstellung, die Max-Anweisung wird verwendet, um den größten% Rabatt-Teil der Frage zu beantworten? Und ich verstehe nicht ganz, wie kommt es, dass du nur "2" im ORDER BY Teil benutzt hast, kannst du das bitte für mich erklären? –
@KurtLee. . . Das 'max()' soll den "größten% Rabatt" beantworten. Die "2" ist eigentlich nur eine Abkürzung, weil ich nicht "Percent_Discount" eingeben wollte. –