Advertisement
Guest User

Untitled

a guest
Apr 13th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.28 KB | None | 0 0
  1. /* ZAD 1*/
  2. SELECT p.PART#, p.NAME, COUNT(od.ORDER#) AS ORDERS, '$' || ' ' || COALESCE(SUM(od.quoted_price*od.NUM_ORDERED)/COUNT(od.ORDER#),0) AS PRICE,
  3. DENSE_RANK() OVER (ORDER BY SUM(od.quoted_price*od.NUM_ORDERED) DESC NULLS LAST) AS RANKING
  4. FROM PART p
  5. LEFT JOIN ORDER_DETAILS od ON p.PART# = od.PART#
  6. GROUP BY p.PART#, p.NAME;
  7.  
  8. /* ZAD 2 */
  9. SELECT C.CITY AS "CITY", P.PART# || ': ' || P.NAME AS "PART", SUM(OD.NUM_ORDERED) AS "TOTAL"
  10. FROM CUSTOMER C
  11. JOIN T_ORDERS O ON C.CUSID = O.CUSID
  12. JOIN ORDER_DETAILS OD ON OD.ORDER# = O.ORDER#
  13. JOIN PART P ON OD.PART# = P.PART#
  14. GROUP BY GROUPING SETS ((C.CITY, P.PART#, P.NAME),(C.CITY),());
  15.  
  16. /* ZAD 3 */
  17. SELECT PART, CITY, TOTAL
  18. FROM (
  19. SELECT C.CITY AS "CITY", P.PART# || ': ' || P.NAME AS "PART", SUM(OD.NUM_ORDERED) AS "TOTAL",
  20. DENSE_RANK() OVER (PARTITION BY P.PART# ORDER BY SUM(OD.NUM_ORDERED) DESC) AS RANK
  21. FROM CUSTOMER C
  22. JOIN T_ORDERS O ON C.CUSID = O.CUSID
  23. JOIN ORDER_DETAILS OD ON OD.ORDER# = O.ORDER#
  24. JOIN PART P ON OD.PART# = P.PART#
  25. GROUP BY GROUPING SETS ((C.CITY, P.PART#, P.NAME))
  26. ORDER BY P.NAME
  27. ) WHERE RANK = 1;
  28.  
  29. /* ZAD 4 */
  30.  
  31. SELECT (c.CUSID || ' ' || c.CUS_NAME) AS CUSTOMER, COUNT(DISTINCT(to1.ORDER#)) AS NUM_ORDS,
  32. COUNT(od.PART#) AS IND_PARTS, '$' || COALESCE(SUM(od.num_ordered*od.QUOTED_PRICE),0) AS TOTAL
  33. FROM CUSTOMER c
  34. LEFT JOIN T_ORDERS to1 ON to1.CUSID = c.CUSID
  35. LEFT JOIN ORDER_DETAILS od ON od.ORDER# = to1.ORDER#
  36. GROUP BY c.CUSID || ' ' || c.CUS_NAME
  37. ORDER BY SUM(od.num_ordered*od.QUOTED_PRICE) DESC NULLS LAST;
  38.  
  39. /* ZAD 5 */
  40. SELECT NAME, TOTAL, INDICATOR
  41. FROM (
  42. SELECT r.REPID || ' ' || r.FIRST_NAME || ' ' || r.LAST_NAME AS NAME, '$' || SUM(od.num_ordered*od.QUOTED_PRICE) AS TOTAL,
  43. 'TOTAL VALUE OF SALES' AS INDICATOR, DENSE_RANK() OVER (ORDER BY SUM(od.num_ordered*od.QUOTED_PRICE) DESC) AS RANK
  44. FROM T_ORDERS to1
  45. JOIN REP r ON r.REPID = to1.REPID
  46. JOIN ORDER_DETAILS od ON to1.ORDER# = od.ORDER#
  47. GROUP BY r.REPID || ' ' || r.FIRST_NAME || ' ' || r.LAST_NAME
  48. ) WHERE RANK = 1
  49. UNION
  50. SELECT NAME, TOTAL, INDICATOR
  51. FROM (
  52. SELECT r.REPID || ' ' || r.FIRST_NAME || ' ' || r.LAST_NAME AS NAME, CAST(SUM(od.num_ordered) AS VARCHAR2(3)) AS TOTAL,
  53. 'QUANTITY OF ITEMS SOLD' AS INDICATOR, DENSE_RANK() OVER (ORDER BY SUM(od.num_ordered) DESC) AS RANK1
  54. FROM T_ORDERS to1
  55. JOIN REP r ON r.REPID = to1.REPID
  56. JOIN ORDER_DETAILS od ON to1.ORDER# = od.ORDER#
  57. GROUP BY r.REPID || ' ' || r.FIRST_NAME || ' ' || r.LAST_NAME
  58. ) WHERE RANK1 = 1
  59. UNION
  60. SELECT NAME, TOTAL, INDICATOR
  61. FROM (
  62. SELECT r.REPID || ' ' || r.FIRST_NAME || ' ' || r.LAST_NAME AS NAME, CAST(COUNT(to1.ORDER#) AS VARCHAR(3)) AS TOTAL,
  63. 'TOTAL NUM OF ORDERS' AS INDICATOR, DENSE_RANK() OVER (ORDER BY COUNT(to1.ORDER#) DESC) AS RANK2  
  64. FROM T_ORDERS to1
  65. JOIN REP r ON r.REPID = to1.REPID
  66. GROUP BY r.REPID || ' ' || r.FIRST_NAME || ' ' || r.LAST_NAME
  67. ) WHERE RANK2 = 1;
  68.  
  69. /*ZAD 6 */
  70. SELECT CUSTOMER, RANK1, RANK2
  71. FROM (
  72.     SELECT C.CUSID || ' ' || C.CUS_NAME AS "CUSTOMER", RANK() OVER (ORDER BY COUNT(DISTINCT(O.ORDER#)) DESC) AS RANK1,
  73.     DENSE_RANK() OVER (ORDER BY SUM(OD.NUM_ORDERED * OD.QUOTED_PRICE)/COUNT(DISTINCT(OD.ORDER#)) DESC) AS RANK2
  74.     FROM CUSTOMER C
  75.     JOIN T_ORDERS O ON C.CUSID = O.CUSID
  76.     JOIN ORDER_DETAILS OD ON O.ORDER# = OD.ORDER#
  77.     GROUP BY C.CUSID, C.CUS_NAME
  78. )
  79. WHERE (RANK1 = 1 OR RANK1 = 2) OR (RANK2 = 1 OR RANK2 =2);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement