kura2yamato

DB: Kasus penjualan terbesar

Apr 28th, 2022 (edited)
844
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.46 KB | None | 0 0
  1. ####### ur yang bisa dicoba: https://www.db-fiddle.com/f/2stBSRHozGxh2MPcZHoJoM/0
  2.  
  3. ####### SCHEMA ###############
  4. CREATE TABLE `ms_produk` (
  5.   `no_urut` INT(11) DEFAULT NULL,
  6.   `kode_produk` VARCHAR(13) CHARACTER SET utf8 DEFAULT NULL,
  7.   `nama_produk` VARCHAR(36) CHARACTER SET utf8 DEFAULT NULL,
  8.   `harga` INT(11) DEFAULT NULL
  9. );
  10.  
  11. CREATE TABLE `tr_penjualan_detail` (
  12.   `kode_transaksi` VARCHAR(16) CHARACTER SET utf8 DEFAULT NULL,
  13.   `kode_produk` VARCHAR(13) CHARACTER SET utf8 DEFAULT NULL,
  14.   `qty` INT(11) DEFAULT NULL,
  15.   `harga_satuan` INT(11) DEFAULT NULL
  16. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  17. #######`ms_produk`
  18. ALTER TABLE `ms_produk`
  19.   ADD PRIMARY KEY (`no_urut`),
  20.   ADD UNIQUE KEY `kode_produk` (`kode_produk`),
  21.   ADD KEY `nama_produk` (`nama_produk`);
  22. ALTER TABLE `ms_produk` CHANGE `no_urut` `no_urut` INT(11) NOT NULL AUTO_INCREMENT;
  23. #######`tr_penjualan_detail`
  24. ALTER TABLE `tr_penjualan_detail`
  25.   ADD KEY `kode_transaksi` (`kode_transaksi`),
  26.   ADD KEY `kode_produk` (`kode_produk`);
  27.  
  28. ########`ms_produk`
  29. INSERT INTO `ms_produk` (`no_urut`, `kode_produk`, `nama_produk`, `harga`) VALUES
  30. (1, 'prod-01', 'Kotak Pensil DQLab', 62500),
  31. (2, 'prod-02', 'Flashdisk DQLab 64 GB', 55000),
  32. (3, 'prod-03', 'Gift Voucher DQLab 100rb', 100000),
  33. (4, 'prod-04', 'Flashdisk DQLab 32 GB', 40000),
  34. (5, 'prod-05', 'Gift Voucher DQLab 250rb', 250000),
  35. (6, 'prod-06', 'Pulpen Multifunction + Laser DQLab', 92500),
  36. (7, 'prod-07', 'Tas Travel Organizer DQLab', 48000),
  37. (8, 'prod-08', 'Gantungan Kunci DQLab', 15800),
  38. (9, 'prod-09', 'Buku Planner Agenda DQLab', 92000),
  39. (10, 'prod-10', 'Sticky Notes DQLab 500 sheets', 55000);
  40.  
  41. ######`tr_penjualan_detail`
  42. INSERT INTO `tr_penjualan_detail` (`kode_transaksi`, `kode_produk`, `qty`, `harga_satuan`) VALUES
  43. ('tr-0001', 'prod-04', 3, 40000),
  44. ('tr-0001', 'prod-02', 1, 55000),
  45. ('tr-0002', 'prod-08', 2, 15800),
  46. ('tr-0003', 'prod-10', 1, 55000),
  47. ('tr-0004', 'prod-09', 1, 92000),
  48. ('tr-0005', 'prod-06', 1, 92500),
  49. ('tr-0006', 'prod-08', 2, 15800),
  50. ('tr-0007', 'prod-08', 2, 15800),
  51. ('tr-0008', 'prod-07', 1, 50000),
  52. ('tr-0009', 'prod-01', 2, 62500),
  53. ('tr-0010', 'prod-04', 3, 48000),
  54. ('tr-0010', 'prod-08', 1, 15800),
  55. ('tr-0010', 'prod-04', 1, 40000);
  56.  
  57.  
  58. ##############QUERY#############################
  59. SELECT p.kode_produk,p.nama_produk, SUM(qty) tot FROM `ms_produk` p
  60. LEFT JOIN tr_penjualan_detail pd ON p.kode_produk = pd.kode_produk
  61. GROUP BY  p.kode_produk,p.nama_produk;
  62.  
  63. ############
  64. SELECT
  65.     tb_prod_sum_0.*
  66. FROM
  67.     (
  68.         SELECT
  69.             p.kode_produk kode,SUM(qty) tot
  70.         FROM
  71.             `ms_produk` p
  72.         LEFT JOIN
  73.             tr_penjualan_detail pd ON p.kode_produk = pd.kode_produk
  74.         GROUP BY  
  75.             p.kode_produk,p.nama_produk
  76.     ) tb_prod_sum_0
  77.  
  78.     HAVING tot=(SELECT MAX(tot) FROM
  79.     (
  80.         SELECT  
  81.             p.kode_produk kode,SUM(qty) tot
  82.         FROM
  83.             `ms_produk` p
  84.         LEFT JOIN
  85.             tr_penjualan_detail pd ON p.kode_produk = pd.kode_produk
  86.         GROUP BY  
  87.             p.kode_produk,p.nama_produk
  88.     ) tb_prod_sum_1);
  89.     ###########
  90.     EXPLAIN
  91.    
  92. SELECT
  93.     tb_prod_sum_0.*
  94. FROM
  95.     (
  96.         SELECT
  97.             p.kode_produk kode,SUM(qty) tot
  98.         FROM
  99.             `ms_produk` p
  100.         LEFT JOIN
  101.             tr_penjualan_detail pd ON p.kode_produk = pd.kode_produk
  102.         GROUP BY  
  103.             p.kode_produk,p.nama_produk
  104.     ) tb_prod_sum_0
  105.  
  106.     HAVING tot=(SELECT MAX(tot) FROM
  107.     (
  108.         SELECT  
  109.             p.kode_produk kode,SUM(qty) tot
  110.         FROM
  111.             `ms_produk` p
  112.         LEFT JOIN
  113.             tr_penjualan_detail pd ON p.kode_produk = pd.kode_produk
  114.         GROUP BY  
  115.             p.kode_produk,p.nama_produk
  116.     ) tb_prod_sum_1);
Add Comment
Please, Sign In to add comment