kura2yamato

database bulan terjual

May 7th, 2022 (edited)
646
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 7.07 KB | None | 0 0
  1. ### bisa dicoba di https://www.db-fiddle.com/f/2stBSRHozGxh2MPcZHoJoM/3
  2.  
  3. ###skema data
  4. ###########
  5. CREATE TABLE `ms_produk` (
  6.   `no_urut` int(11) NOT NULL,
  7.   `kode_produk` varchar(13) CHARACTER SET utf8 DEFAULT NULL,
  8.   `nama_produk` varchar(36) CHARACTER SET utf8 DEFAULT NULL,
  9.   `harga` int(11) DEFAULT NULL
  10. );
  11. INSERT INTO `ms_produk` (`no_urut`, `kode_produk`, `nama_produk`, `harga`) VALUES
  12. (1, 'prod-01', 'Kotak Pensil DQLab', 62500),
  13. (2, 'prod-02', 'Flashdisk DQLab 64 GB', 55000),
  14. (3, 'prod-03', 'Gift Voucher DQLab 100rb', 100000),
  15. (4, 'prod-04', 'Flashdisk DQLab 32 GB', 40000),
  16. (5, 'prod-05', 'Gift Voucher DQLab 250rb', 250000),
  17. (6, 'prod-06', 'Pulpen Multifunction + Laser DQLab', 92500),
  18. (7, 'prod-07', 'Tas Travel Organizer DQLab', 48000),
  19. (8, 'prod-08', 'Gantungan Kunci DQLab', 15800),
  20. (9, 'prod-09', 'Buku Planner Agenda DQLab', 92000),
  21. (10, 'prod-10', 'Sticky Notes DQLab 500 sheets', 55000);
  22. ##############
  23. CREATE TABLE `tr_penjualan` (
  24.   `id` int(11) NOT NULL,
  25.   `kode_transaksi` char(12) NOT NULL,
  26.   `total_product` int(11) NOT NULL,
  27.   `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  28.   `updated_at` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp(),
  29.   `deleted_at` datetime DEFAULT NULL
  30. ) ;
  31.  
  32. INSERT INTO `tr_penjualan` (`id`, `kode_transaksi`, `total_product`, `created_at`, `updated_at`, `deleted_at`) VALUES
  33. (1, 'tr-0001', 2, '2022-04-18 01:03:17', NULL, NULL),
  34. (2, 'tr-0002', 1, '2022-03-18 02:03:17', NULL, NULL),
  35. (3, 'tr-0003', 1, '2022-01-17 04:03:17', NULL, NULL),
  36. (4, 'tr-0004', 1, '2022-05-16 03:03:17', NULL, NULL),
  37. (5, 'tr-0005', 1, '2022-02-11 05:03:17', NULL, NULL),
  38. (6, 'tr-0006', 1, '2022-03-21 07:03:17', NULL, NULL),
  39. (7, 'tr-0007', 1, '2022-04-25 09:03:17', NULL, NULL),
  40. (8, 'tr-0008', 1, '2022-05-5 08:03:17', NULL, NULL),
  41. (9, 'tr-0009', 1, '2022-05-7 11:03:17', NULL, NULL),
  42. (10, 'tr-0010', 3, '2022-02-9 21:03:17', NULL, NULL);
  43. #########
  44.  
  45. CREATE TABLE `tr_penjualan_detail` (
  46.   `id` int(11) NOT NULL,
  47.   `kode_transaksi` char(12) CHARACTER SET utf8 DEFAULT NULL,
  48.   `kode_produk` varchar(13) CHARACTER SET utf8 DEFAULT NULL,
  49.   `qty` int(11) DEFAULT NULL,
  50.   `harga_satuan` int(11) DEFAULT NULL,
  51.   `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  52.   `updated_at` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
  53. );
  54. INSERT INTO `tr_penjualan_detail` (`id`, `kode_transaksi`, `kode_produk`, `qty`, `harga_satuan`, `created_at`, `updated_at`) VALUES
  55. (1, 'tr-0001', 'prod-04', 3, 40000, '2022-04-08 01:03:17', '2022-05-07 18:03:31'),
  56. (2, 'tr-0001', 'prod-02', 1, 55000, '2022-05-08 01:03:17', NULL),
  57. (3, 'tr-0002', 'prod-08', 2, 15800, '2022-03-08 01:03:17', '2022-05-07 18:03:39'),
  58. (4, 'tr-0003', 'prod-10', 1, 55000, '2022-05-08 01:03:17', NULL),
  59. (84, 'tr-0004', 'prod-10', 1, 55000, '2022-05-08 01:03:17', NULL),
  60. (5, 'tr-0004', 'prod-09', 1, 92000, '2022-05-08 01:03:17', NULL),
  61. (6, 'tr-0005', 'prod-06', 1, 92500, '2022-05-08 01:03:17', NULL),
  62. (7, 'tr-0006', 'prod-08', 2, 15800, '2022-03-08 01:03:17', '2022-05-07 18:03:47'),
  63. (8, 'tr-0007', 'prod-08', 2, 15800, '2022-04-08 01:03:17', '2022-05-07 18:04:10'),
  64. (9, 'tr-0008', 'prod-07', 1, 50000, '2022-05-08 01:03:17', NULL),
  65. (10, 'tr-0009', 'prod-01', 2, 62500, '2022-05-08 01:03:17', NULL),
  66. (11, 'tr-0010', 'prod-04', 3, 48000, '2022-04-08 01:03:17', '2022-05-07 18:03:53'),
  67. (12, 'tr-0010', 'prod-08', 1, 15800, '2022-05-08 01:03:17', NULL),
  68. (13, 'tr-0002', 'prod-04', 1, 40000, '2022-02-08 01:03:17', '2022-05-07 18:04:05'),
  69. (15, 'tr-0007', 'prod-10', 2, 110000, '2022-04-08 01:03:17', '2022-05-07 18:04:10'),
  70. (17, 'tr-0008', 'prod-10', 2, 110000, '2022-03-08 01:03:17', '2022-05-07 18:04:10');
  71. ############
  72. ALTER TABLE `ms_produk`
  73.   ADD PRIMARY KEY (`no_urut`),
  74.   ADD UNIQUE KEY `kode_produk` (`kode_produk`),
  75.   ADD KEY `nama_produk` (`nama_produk`);
  76. ALTER TABLE `tr_penjualan`
  77.   ADD PRIMARY KEY (`id`),
  78.   ADD UNIQUE KEY `kode_transaksi` (`kode_transaksi`);
  79. ALTER TABLE `tr_penjualan_detail`
  80.   ADD PRIMARY KEY (`id`),
  81.   ADD KEY `kode_transaksi` (`kode_transaksi`),
  82.   ADD KEY `kode_produk` (`kode_produk`);
  83. ALTER TABLE `ms_produk`
  84.   MODIFY `no_urut` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=111;
  85. ALTER TABLE `tr_penjualan`
  86.   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=116;
  87. ALTER TABLE `tr_penjualan_detail`
  88.   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=114;
  89.  
  90.  
  91. ###########################3
  92. #jawaban dari soal
  93. SELECT
  94. date_format(pd.created_at, "%m/%Y") bln,
  95. p.kode_produk, p.nama_produk,
  96. count(*) `total trans`, sum(pd.qty) `total item`,
  97. min(pd.created_at) `tgl min`, max(pd.created_at) `tgl max`
  98. FROM `ms_produk` p
  99. inner join tr_penjualan_detail pd on p.kode_produk = pd.kode_produk
  100. group by p.kode_produk, p.nama_produk, bln
  101. order by bln asc, p.kode_produk asc;
  102. ##
  103. explain
  104. SELECT
  105. date_format(pd.created_at, "%m/%Y") bln,
  106. p.kode_produk, p.nama_produk, count(*) `total`, sum(pd.qty) `total item`,
  107. min(pd.created_at) `tgl min`, max(pd.created_at) `tgl max`
  108. FROM `ms_produk` p
  109. inner join tr_penjualan_detail pd on p.kode_produk = pd.kode_produk
  110. group by p.kode_produk, p.nama_produk, bln
  111. order by bln asc, p.kode_produk asc;
  112.  
  113.  
  114. #jawaban seharusnya. Fyi tanggal adanya di transaksi utama bukan detail
  115. SELECT
  116. tblBulan.bln,
  117. p.kode_produk, p.nama_produk, count(*) `total trans`, sum(pd.qty) `jmlh barang`,
  118. min(pjual.created_at) `tgl min`, max(pjual.created_at) `tgl max`,
  119. group_concat(pjual.kode_transaksi) `all trans`
  120. FROM
  121. (
  122.    SELECT date_format(created_at, "%m/%Y") bln FROM `tr_penjualan` group by bln
  123. ) tblBulan
  124. left join tr_penjualan pjual on tblBulan.bln = date_format(pjual.created_at,  "%m/%Y")
  125. inner join tr_penjualan_detail pd on pjual.kode_transaksi = pd.kode_transaksi
  126. join `ms_produk` p on p.kode_produk = pd.kode_produk
  127. group by
  128.    p.kode_produk, p.nama_produk, tblBulan.bln
  129. order by
  130.     bln asc, p.kode_produk asc;
  131. ###
  132. explain
  133. SELECT
  134. tblBulan.bln,
  135. p.kode_produk, p.nama_produk, count(*) `total`, sum(pd.qty) `jmlh barang`,
  136. min(pd.created_at) `tgl min`, max(pd.created_at) `tgl max`
  137. FROM
  138. (
  139.    SELECT date_format(created_at, "%m/%Y") bln FROM `tr_penjualan_detail` group by bln
  140. ) tblBulan
  141. left join tr_penjualan pjual on tblBulan.bln = date_format(pjual.created_at,  "%m/%Y")
  142. inner join tr_penjualan_detail pd on pjual.kode_transaksi = pd.kode_transaksi
  143. join `ms_produk` p on p.kode_produk = pd.kode_produk
  144.  
  145. group by p.kode_produk, p.nama_produk, tblBulan.bln
  146. order by bln asc, p.kode_produk asc;
  147.  
  148.  
  149. #tahun
  150. explain
  151. SELECT date_format(created_at, "%m/%Y") bln FROM `tr_penjualan_detail` group by bln;
  152.  
  153. #product
  154. explain
  155. SELECT
  156. p.kode_produk, p.nama_produk, date_format(pd.created_at, "%m/%Y") bln
  157. FROM `ms_produk` p
  158. inner join tr_penjualan_detail pd on p.kode_produk = pd.kode_produk;
  159. ############
  160.  
  161. explain
  162. SELECT count(*) c,
  163. p.kode_produk, p.nama_produk, date_format(pd.created_at, "%m/%Y") bln
  164. FROM `ms_produk` p
  165. inner join tr_penjualan_detail pd on p.kode_produk = pd.kode_produk
  166. group by p.kode_produk, p.nama_produk, bln
  167. order by p.kode_produk;
  168. #########
  169.  
  170. explain
  171. SELECT
  172. kode_transaksi, min(created_at) dt,count(*) prod
  173. FROM `tr_penjualan_detail` group by kode_transaksi;
Add Comment
Please, Sign In to add comment