Advertisement
widana

temp

Jul 26th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. 1. Beda IN dan EXITS
  2. - IN = adalah untuk mengecek apakah nilai termasuk dalam list
  3. jika nilai nya terdapat dalam list/sebuah array maka akan menghasilkan nilai t = true
  4. - EXISTS = adalah untuk memeriksa apakah row nya ada atau tidak
  5.  
  6. 2. Kapan pakai IN Kapan pakai EXISTS
  7. a. IN = jika kita ingin memfilter lebih dari satu value.
  8. b. b.EXISTS = jika kita ingin memfilter yang datanya ada dibaris2 table saja / data nya yg ada didalam subquery.
  9.  
  10. 3. Tampilkan sale_hp untuk semua tahun, tp hanya yang top year di tahun bersangkutan
  11. a. SELECT A.hp_id, C.brand_id, A.year, B.hp_name, C.brand_name
  12. FROM sale_hp A
  13. INNER JOIN product_hp B ON A.hp_id = B.hp_id
  14. INNER JOIN brand_hp C ON B.hp_brand_id = C.brand_id
  15. WHERE EXISTS (SELECT 1 FROM top_hp_of_the_year Z WHERE A.hp_id = Z.hp_id AND A.year = Z.year)
  16. ORDER BY A.year;
  17.  
  18. b. SELECT A.hp_id, C.brand_id, A.year, B.hp_name, C.brand_name
  19. FROM sale_hp A
  20. INNER JOIN product_hp B ON A.hp_id = B.hp_id
  21. INNER JOIN brand_hp C ON B.hp_brand_id = C.brand_id
  22. WHERE A.hp_id IN (SELECT Z.hp_id FROM top_hp_of_the_year Z WHERE A.hp_id = Z.hp_id AND A.year = Z.year)
  23. ORDER BY A.year;
  24.  
  25. c. SELECT A.hp_id, D.brand_id, A.year, C.hp_name, D.brand_name
  26. FROM top_hp_of_the_year A
  27. INNER JOIN sale_hp B ON A.hp_id = B.hp_id AND A.year = B.year
  28. INNER JOIN product_hp C ON B.hp_id = C.hp_id
  29. INNER JOIN brand_hp D ON C.hp_brand_id = D.brand_id
  30. ORDER BY A.year ASC;
  31.  
  32. 4. Tampilkan sale hp perbrand brand yang tidak semua typenya terjual di tahun bersangkutan
  33. a. SELECT temp_year.year, B.brand_name
  34. FROM product_hp A
  35. INNER JOIN brand_hp B ON A.hp_brand_id = B.brand_id, (SELECT year FROM sale_hp GROUP BY year) AS temp_year
  36. WHERE NOT EXISTS (SELECT 1 FROM sale_hp Z WHERE A.hp_id = Z.hp_id AND Z.year = temp_year.year)
  37. ORDER BY temp_year.year;
  38. b. SELECT temp_year.year, B.brand_name
  39. FROM product_hp A
  40. INNER JOIN brand_hp B ON A.hp_brand_id = B.brand_id, (SELECT year FROM sale_hp GROUP BY year) AS temp_year
  41. WHERE A.hp_id NOT IN (SELECT Z.hp_id FROM sale_hp Z WHERE A.hp_id = Z.hp_id AND Z.year = temp_year.year)
  42. ORDER BY temp_year.year;
  43.  
  44. 5. Tampilkan sale hp perbrand yg total penjualannya meningkat dari tahun sebelumnya
  45. WITH TEMP AS (
  46. SELECT B.hp_id, C.brand_name, A.year,SUM(A.qty) AS qty_sale,CAST(A.year::bigint - 1 AS CHARACTER VARYING) AS temp_year,
  47. (SELECT COALESCE(SUM(Z.qty),0)
  48. FROM sale_hp Z
  49. WHERE Z.hp_id = B.hp_id
  50. AND Z.year IN (CAST(A.year::bigint - 1 AS CHARACTER VARYING))) AS temp_qty_sale
  51. FROM sale_hp A
  52. INNER JOIN product_hp B ON A.hp_id = B.hp_id
  53. INNER JOIN brand_hp C ON B.hp_brand_id = C.brand_id
  54. GROUP BY A.year, B.hp_id, C.brand_name
  55. ORDER BY A.year, temp_year ASC
  56. )
  57. SELECT X.brand_name, X.temp_year AS year, X.qty_sale-X.temp_qty_sale AS qty_sale_difference
  58. FROM TEMP X
  59. WHERE X.temp_year <> (SELECT MIN(Z.temp_year) FROM TEMP Z)
  60. AND X.qty_sale-X.temp_qty_sale > 0
  61. GROUP BY X.brand_name, X.temp_year, X.qty_sale, X.temp_qty_sale
  62. ORDER BY X.temp_year ASC;
  63.  
  64. 6. Tampilkan sale hp per brand yg jumlah penjualan lebih tinggi dari rata2 tiap tahunnya
  65. SELECT A.year, C.brand_id, C.brand_name,SUM(A.qty) AS qty_sale, ROUND(AVG(A.qty)) AS total_average
  66. FROM sale_hp A
  67. INNER JOIN product_hp B ON A.hp_id = B.hp_id
  68. INNER JOIN brand_hp C ON B.hp_brand_id = C.brand_id
  69. GROUP BY A.year, C.brand_name, C.brand_id
  70. HAVING SUM(A.qty) > ROUND(AVG(A.qty))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement