1 / 31

SQL Παραδείγματα

SQL Παραδείγματα. Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 3 Δαμιανός Χατζηαντωνίου. Άσκηση. Customer ( cust , name, address) Product ( prod , name, price) Sales( cust, prod, day, month, year , state, amount). Άσκηση. Βρες όλα τα ονόματα των πελατών

Download Presentation

SQL Παραδείγματα

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 3 Δαμιανός Χατζηαντωνίου

  2. Άσκηση • Customer (cust, name, address) • Product (prod, name, price) • Sales(cust, prod, day, month, year, state, amount)

  3. Άσκηση • Βρες όλα τα ονόματα των πελατών • Βρες τα ονόματα των προϊόντων με τιμή > 10$ • Βρες τους κωδικούς των πελατών που αγόρασαν κάποιο προϊόν την 25/11/2001 • Για κάθε προϊόν δείξε το μέσο όρο πωλήσεων για κάθε μήνα του 2001 • Δείξε για κάθε πελάτη το σύνολο των πωλήσεων του στη «ΝΥ» στην «CA»,και στο «NJ» • Δείξε για κάθε πελάτη το σύνολο των πωλήσεων του στη «ΝΥ» και στην «CA», μόνο αν ο μέσος όρος των πωλήσεων στη «ΝΥ» είναι μεγαλύτερος από το μέσο όρο στην «CA». • Για κάθε προϊόν και για τις πωλήσεις του 2001, δείξε το σύνολο των πωλήσεων του προϊόντος κάθε μήνα σαν ποσοστό του ετήσιου συνόλου του

  4. Λύση SELECT name FROM Customer SELECT name FROM Product WHERE price > 10 SELECT C.cust From Customer C, Sales S WHERE C.cust=S.cust AND S.day=25 AND S.month=11 AND S.year=2001

  5. Λύση SELECT prod, month, avg(amount) FROM Sales WHERE Year = 2001 GROUP BY prod, month SELECT X.cust, sum(X.amount), sum(Y.amount), sum(Z.amount) FROM Sales X, Sales Y, Sales Z WHERE X.cust = Y.cust AND Y.cust=Z.cust AND X.state=‘NY’ AND Y.state=‘CA’ AND Z.state=‘NJ’ GROUP BY X.cust

  6. Λύση CREATE VIEW Q1(cust, sum_x, sum_y, avg_x, avg_y) as SELECT X.cust, sum(X.amount), sum(Y.amount), avg(X.amount), avg(Y.amount) FROM sales X, sales Y WHERE X.cust=Y.cust and X.state='NY' and Y.state='CA' GROUP BY X.cust SELECT cust, sum_x, sum_y from Q1 WHERE avg_x > avg_y

  7. Λύση create view V1 (cust, month, sum_amount) as select cust, month, sum(amount) from sales where year=2001 group by cust, month create view V2(cust, sum_amount) as select cust, sum(amount) from sales where year=2001 group by cust select V1.cust, V1.month, V1.sum_amount/V2.sum_amount from V1, V2 where V1.cust=V2.cust

  8. Άσκηση • Emp (eid integer, ename string, age integer, salary real) • Works (eid integer, did integer, pct_time integer) • Dept(did integer, budget real, managerid integer)

  9. Άσκηση

  10. SQL - 1 SELECT E.Ename, E.age FROM Emp E, Works W1, Works W2 WHERE E.eid = W1.eid AND W1.did = 4 AND E.eid = W2.eid AND W2.did = 5

  11. SQL - 2

  12. SQL - 3

  13. SQL - 4

  14. SQL - 5

  15. SQL - 6

  16. SQL - 7

  17. Άσκηση • Suppliers (sid:integer, sname:string, address:string) • Parts (pid:integer, pname:string, color:string) • Catalog (sid:integer, pid:integer, cost: real)

  18. Άσκηση

  19. SQL - 1

  20. SQL - 2

  21. SQL - 3

  22. SQL - 4

  23. SQL - 5

  24. SQL - 6

  25. SQL - 7

  26. SQL - 8

  27. SQL - 9

  28. Άσκηση • Έστω ότι έχετε την ακόλουθη περιγραφή ενός πίνακα: Sales(cust_idint, prod_id int , day int, month int, year int, amount real) • Γράψτε μία stored procedure (με δύο τρόπους) η οποία να παίρνει σαν παράμετρο τον αριθμό πελάτηκαι να υπολογίζει το σύνολο των αγορών του το μήνα Ιούνιο του 2001. • Γράψτε ένα Java πρόγραμμα που να κάνει το ίδιο.

  29. Λύση 1 CREATE PROCEDURE Temp1 @customer int AS SELECT sum(amount) FROM Sales WHERE cust_id = @customer AND month=6 AND year=2001 ------- EXECUTE Temp1 1 EXEC Temp1 2 EXEC Temp1 @customer=1

  30. Λύση 2 CREATE PROCEDURE Temp2 @customer int AS DECLARE @cust_id int, @month int, @year int, @amount float DECLARE @total float SELECT @total=0 DECLARE temp_cursor CURSOR FOR SELECT cust_id, month, year, amount FROM Sales OPEN temp_cursor FETCH NEXT FROM temp_cursor INTO @cust_id, @month, @year, @amount WHILE @@FETCH_STATUS = 0 BEGIN IF (@customer = @cust_id AND @month=6 AND @year=2001) SET @total = @total + @amount FETCH NEXT FROM temp_cursor INTO @cust_id, @month, @year, @amount END PRINT @total CLOSE temp_cursor DEALLOCATE temp_cursor

  31. Λύση 3 import java.io.*; import java.text.*; import java.util.*; import java.sql.*; public class example { public static void main(String args[]) { Connection dbcon; float total, amount; int month, year, cust; String url = "jdbc:odbc:salesdb"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); dbcon = DriverManager.getConnection(url,"sa", ""); Statement stmt; ResultSet rs; stmt = dbcon.createStatement(); rs = stmt.executeQuery("SELECT * FROM Sales"); while (rs.next()) { cust=rs.getInt(“cust_id”); month=rs.getInt(“month”); year=rs.getInt(“year”); amount=rs.getFloat(“amount”); if (cust==2 && month==6 && year==2001) total+=amount; } rs.close(); System.out.println(total); stmt.close(); dbcon.close(); } }

More Related