Advertisement
Hannaichi

Solecode PostgeSQL Query

Aug 15th, 2023 (edited)
1,558
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE TABLE Kategori (
  2.   id INT PRIMARY KEY,
  3.   nama_kategori VARCHAR(255)
  4. );
  5.  
  6. CREATE TABLE Pengunjung (
  7.   id INT PRIMARY KEY,
  8.   nama VARCHAR(255),
  9.   alamat VARCHAR(255),
  10.   no_ktp VARCHAR(255),
  11.   no_hp VARCHAR(255),
  12.   email VARCHAR(255)
  13. );
  14.  
  15. CREATE TABLE Buku (
  16.   id INT PRIMARY KEY,
  17.   judul VARCHAR(255),
  18.   pengarang VARCHAR(255),
  19.   penerbit VARCHAR(255),
  20.   isbn VARCHAR(255),
  21.   tahun_terbit INT,
  22.   jumlah_tersedia INT,
  23.   kategori_id INT,
  24.   FOREIGN KEY (kategori_id) REFERENCES Kategori(id)
  25. );
  26.  
  27. CREATE TABLE Peminjaman (
  28.   id INT PRIMARY KEY,
  29.   pengunjung_id INT,
  30.   buku_id INT,
  31.   tanggal_pinjam DATE,
  32.   tanggal_kembali DATE,
  33.   denda INT,
  34.   FOREIGN KEY (pengunjung_id) REFERENCES Pengunjung(id),
  35.   FOREIGN KEY (buku_id) REFERENCES Buku(id)
  36. );
  37.  
  38. INSERT INTO Kategori (id, nama_kategori) VALUES
  39.   (1, 'Fiksi'),
  40.   (2, 'Non-Fiksi'),
  41.   (3, 'Sains'),
  42.   (4, 'Sejarah'),
  43.   (5, 'Biografi');
  44.  
  45. INSERT INTO pengunjung (id, nama, alamat, no_ktp, no_hp, email) VALUES
  46.   (1, 'User 1', 'Alamat 1', '1234567890', '081234567890', '[email protected]'),
  47.   (2, 'User 2', 'Alamat 2', '0987654321', '082345678901', '[email protected]'),
  48.   (3, 'User 3', 'Alamat 3', '5678901234', '083456789012', '[email protected]');
  49.  
  50. INSERT INTO Buku (id, judul, pengarang, penerbit, isbn, tahun_terbit, jumlah_tersedia, kategori_id) VALUES
  51.   (1, 'Buku 1', 'Pengarang 1', 'Penerbit 1', 'ISBN 1', 2020, 5, 1),
  52.   (2, 'Buku 2', 'Pengarang 2', 'Penerbit 2', 'ISBN 2', 2018, 3, 1),
  53.   (3, 'Buku 3', 'Pengarang 3', 'Penerbit 3', 'ISBN 3', 2019, 7, 2),
  54.   (4, 'Buku 4', 'Pengarang 4', 'Penerbit 4', 'ISBN 4', 2021, 2, 2),
  55.   (5, 'Buku 5', 'Pengarang 5', 'Penerbit 5', 'ISBN 5', 2022, 4, 3),
  56.   (6, 'Buku 6', 'Pengarang 6', 'Penerbit 6', 'ISBN 6', 2020, 6, 3),
  57.   (7, 'Buku 7', 'Pengarang 7', 'Penerbit 7', 'ISBN 7', 2017, 1, 4),
  58.   (8, 'Buku 8', 'Pengarang 8', 'Penerbit 8', 'ISBN 8', 2018, 9, 4),
  59.   (9, 'Buku 9', 'Pengarang 9', 'Penerbit 9', 'ISBN 9', 2019, 3, 5),
  60.   (10, 'Buku 10', 'Pengarang 10', 'Penerbit 10', 'ISBN 10', 2021, 5, 5);
  61.  
  62. INSERT INTO Peminjaman (id, pengunjung_id, buku_id, tanggal_pinjam, tanggal_kembali, denda) VALUES
  63.   (1, 1, 1, '2023-08-01', '2023-08-08', 0),
  64.   (2, 1, 2, '2023-08-02', '2023-08-09', 0),
  65.   (3, 1, 3, '2023-08-03', '2023-08-10', 0),
  66.   (4, 2, 4, '2023-08-04', '2023-08-11', 0),
  67.   (5, 2, 5, '2023-08-05', '2023-08-12', 0),
  68.   (6, 2, 6, '2023-08-06', '2023-08-13', 0),
  69.   (7, 3, 7, '2023-08-07', '2023-08-14', 0),
  70.   (8, 3, 8, '2023-08-08', '2023-08-15', 0),
  71.   (9, 3, 9, '2023-08-09', '2023-08-16', 0);
  72.  
  73. UPDATE Peminjaman SET denda = 5000 WHERE id = 9;
  74.  
  75. SELECT judul
  76. FROM Buku
  77. LEFT JOIN Peminjaman ON Buku.id = Peminjaman.buku_id
  78. WHERE Peminjaman.buku_id IS NULL;
  79.  
  80. SELECT Pengunjung.nama AS "User", SUM(Peminjaman.denda) AS "Denda"
  81. FROM Pengunjung
  82. JOIN Peminjaman ON Pengunjung.id = Peminjaman.pengunjung_id
  83. WHERE Pengunjung.id = 3
  84. GROUP BY Pengunjung.nama;
  85.  
  86. SELECT Pengunjung.nama AS "User", STRING_AGG(Buku.judul, ', ' ORDER BY Buku.id DESC) AS "Buku"
  87. FROM Pengunjung
  88. JOIN Peminjaman ON Pengunjung.id = Peminjaman.pengunjung_id
  89. JOIN Buku ON Buku.id = Peminjaman.buku_id
  90. GROUP BY Pengunjung.nama;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement