Email : brigita.melantika@student.matanauniversity.ac.id
RPubs : https://rpubs.com/brigitatiaraem/
Jurusan : Statistika
Address : ARA Center, Matana University Tower
Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.
Database relasional memiliki keunggunaln besar dalam mengambil dan menganalisis data dengan waktu yang singkat yang mana caranya yaitu menjalankan Query. Query memiliki pengertian yaitu suatu kemampuan yang digunakan untuk menampilkan data dari database untuk diolah lebih lanjut yang biasanya diambil dari tabel tabel dalam database.Dengan jelasnya, Query ini merupakan perintah-perintah untuk mengakses dan memanipulasi data pada sistem basis data yang telah di standar kan dan dikenal dengan nama Structured Query Language (SQL). Query sendir dapat menarik informasi dari satu atau beberapa tabel berdasarkan serangkaian kondisi pencarian yang tetapkan. Sehingga pada laman ini, akan mempelajari cara membuat query satu tabel sederhana.
# Mengatur koneksi dan simpan ke ruang kerja
library(RMySQL)## Loading required package: DBI
library(DBI)
library(dbplyr)brigita <- dbConnect(RMySQL::MySQL(),
dbname='mysql',
username='root',
password='',
host='localhost',
port=3306)
knitr::opts_chunk$set(connection = "brigita") # mengatur koneksi di Rmarkdown chunkPada SELECT ini perintah yang ditujukan untuk mengambil data yang berada pada tabel-tabel dalam database sehingga data tersebut dapat dikembalikan dalam bentuk tabel hasil atau hasil-set.
Dengan dasar bahwa pada kolom1, kolom2… adalah bidang tabel yang nilainya ingin diambil. Berikut adalah syntax yang dapat digunakan dalam mengambil beberapa bidang yang tersedia di bidang tersebut.
SELECT CustomerName, Address, City, Country
FROM CUSTOMERS;| CustomerName | Address | City | Country |
|---|---|---|---|
| Alfreds Futterkiste | Obere Str. 57 | Frankfurt | Germany |
| Ana Trujillo Emparedados y helados | Avda. de la Constitución 2222 | México D.F. | Mexico |
| Antonio Moreno TaquerÃa | Mataderos 2312 | México D.F. | Mexico |
| Around the Horn | 120 Hanover Sq. | London | UK |
| Berglunds snabbköp | Berguvsvägen 8 | Luleå | Sweden |
| Blauer See Delikatessen | Forsterstr. 57 | Mannheim | Germany |
| Blondel père et fils | 24, place Kléber | Strasbourg | France |
| Bólido Comidas preparadas | C/ Araquil, 67 | Madrid | Spain |
| Bon app’ | 12, rue des Bouchers | Marseille | France |
| Bottom-Dollar Marketse | 23 Tsawassen Blvd. | Tsawassen | Canada |
Jika ingin mengambil semua bidang tabel PELANGGAN, maka bentuk query sebagai berikut.
SELECT *
FROM CUSTOMERS;| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
| 3 | Antonio Moreno TaquerÃa | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
| 6 | Blauer See Delikatessen | Hanna Moos | Forsterstr. 57 | Mannheim | 68306 | Germany |
| 7 | Blondel père et fils | Frédérique Citeaux | 24, place Kléber | Strasbourg | 67000 | France |
| 8 | Bólido Comidas preparadas | MartÃn Sommer | C/ Araquil, 67 | Madrid | 28023 | Spain |
| 9 | Bon app’ | Laurence Lebihans | 12, rue des Bouchers | Marseille | 13008 | France |
| 10 | Bottom-Dollar Marketse | Elizabeth Lincoln | 23 Tsawassen Blvd. | Tsawassen | T2F 8M4 | Canada |
SQL DISTINCT atau SELECT - DISTINCT ini merupakan perintah yang dijalankan bersama dengan perintah SELECT untuk menampilkan nilai / catatan yang berbeda dengan cara pada tabel terdapat kolomyang memiliki banyak nilai duplikat sehingga dapat dengan menghilangkan semua catatan / nilai dari duplikat dan hanya mengambil catatan unik/berbeda dari suatu data. Dikarenakan banyaknya catatan duplikat maka dapat dilakukan hanya mengambil catatan unit daripada mengambil catatan duplikat.
Berikut merupakan syntax dasar yang digunakan dalam DISTINCT untuk menghilangkan rekaman duplikat.
SELECT DISTINCT Country
FROM customers;| Country |
|---|
| Germany |
| Mexico |
| UK |
| Sweden |
| France |
| Spain |
| Canada |
| Argentina |
| Switzerland |
| Brazil |
WHERE pada SQL ini biasanya digunakan untuk memfilter hasil dari SELECT dengna mengekstrak record pada kondisi tertentu/memenuhi persyaratakn tertentu.Dengan catatan WHERE juga digunakan dalam pernyataan UPDATE, DELETE, dll.
Pernyataan SQL berikut memilih semua pelanggan dari negara “Meksiko”, di tabel “Pelanggan”
SELECT *
FROM Customers
WHERE Country='Mexico';| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
| 3 | Antonio Moreno TaquerÃa | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
| 13 | Centro comercial Moctezuma | Francisco Chang | Sierras de Granada 9993 | México D.F. | 5022 | Mexico |
| 58 | Pericles Comidas clásicas | Guillermo Fernández | Calle Dr. Jorge Cash 321 | México D.F. | 5033 | Mexico |
| 80 | Tortuga Restaurante | Miguel Angel Paolino | Avda. Azteca 123 | México D.F. | 5033 | Mexico |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
| 3 | Antonio Moreno TaquerÃa | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
| 13 | Centro comercial Moctezuma | Francisco Chang | Sierras de Granada 9993 | México D.F. | 5022 | Mexico |
| 58 | Pericles Comidas clásicas | Guillermo Fernández | Calle Dr. Jorge Cash 321 | México D.F. | 5033 | Mexico |
| 80 | Tortuga Restaurante | Miguel Angel Paolino | Avda. Azteca 123 | México D.F. | 5033 | Mexico |
Berikut merupakan operator yang dapat digunakan dalam WHERE.
= : Equal.
: Lebih besar dari.
< : Lebih kecil dari.
= : Lebih besar dari atau sama dengan.
<= :Lebih kecil dari atau sama dengan.
<> : Tidak sama (atau bisa menggunkan !=).
IS NULL or IS NOT NUL : Bidang dengan nilai NULL adalah bidang tanpa nilai.
BETWEEN : Antara rentang tertentu.
LIKE : Cari pola.
IN : Menentukan beberapa kemungkinan nilai untuk kolom.
Operator BETWEEN ini digunakan untuk menampilkan data-data yang ingin ditampikan berdasarkan pada nilai dalam rentang tertentu.Selain itu, BETWEEN ini dapat melakukan pengujian jika sebuah expression berada dalma suatu rentang nilai tertentu atau inklusif. Nilai dapat berupa angka, teks, atau tanggal. Berikut merupakan contoh dengan pernyataan SQL memilih semua produk dengan harga BETWEEN 10 dan 20.
SELECT *
FROM Products
WHERE Price
BETWEEN 10 AND 20;| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
|---|---|---|---|---|---|
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18.00 |
| 2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19.00 |
| 3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10.00 |
| 15 | Genen Shouyu | 6 | 2 | 24 - 250 ml bottles | 15.50 |
| 16 | Pavlova | 7 | 3 | 32 - 500 g boxes | 17.45 |
| 21 | Sir Rodney’s Scones | 8 | 3 | 24 pkgs. x 4 pieces | 10.00 |
| 25 | NuNuCa Nuß-Nougat-Creme | 11 | 3 | 20 - 450 g glasses | 14.00 |
| 31 | Gorgonzola Telino | 14 | 4 | 12 - 100 g pkgs | 12.50 |
| 34 | Sasquatch Ale | 16 | 1 | 24 - 12 oz bottles | 14.00 |
| 35 | Steeleye Stout | 16 | 1 | 24 - 12 oz bottles | 18.00 |
Berikut merupakan contoh dari pernyataan SQL yangt memilih semua pesanan dengan OrderDate BETWEEN ‘01-July-1996’ dan ‘31-July-1996’:
SELECT *
FROM Orders
WHERE OrderDate
BETWEEN '1996-07-01' AND '1996-07-31';| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
|---|---|---|---|---|
| 10248 | 90 | 5 | 1996-07-04 | 3 |
| 10249 | 81 | 6 | 1996-07-05 | 1 |
| 10250 | 34 | 4 | 1996-07-08 | 2 |
| 10251 | 84 | 3 | 1996-07-08 | 1 |
| 10252 | 76 | 4 | 1996-07-09 | 2 |
| 10253 | 34 | 3 | 1996-07-10 | 2 |
| 10254 | 14 | 5 | 1996-07-11 | 2 |
| 10255 | 68 | 9 | 1996-07-12 | 3 |
| 10256 | 88 | 3 | 1996-07-15 | 2 |
| 10257 | 35 | 4 | 1996-07-16 | 3 |
Operator IN dapat digunkan dalam menampilkan data berdasarkan kriteria yang diinginkan dan menentukan beberapa nilai dalam operator WHERE. Secara umum jika kita ingin memanggil data dengan banyak kriteria, kebanyakan menggunakan fungsi OR, namun fungsi IN menggunakan sintak yang jauh lebih simple yaitu cukup sekali menuliskan nama field yang akan difilter kemudian dilanjutkan dengan menambahkan function IN dan tanda kurung, dimana isi dari tanda kurung adalah kriteria data yang ingin ditampilkan.
Berikut ini contoh dari pernyataan SQL yang memilih semua pelanggan yang berlokasi di “Jerman”, “Prancis” atau “Inggris Raya”.
SELECT *
FROM Customers
WHERE Country
IN (SELECT Country FROM Suppliers);| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
| 6 | Blauer See Delikatessen | Hanna Moos | Forsterstr. 57 | Mannheim | 68306 | Germany |
| 7 | Blondel père et fils | Frédérique Citeaux | 24, place Kléber | Strasbourg | 67000 | France |
| 8 | Bólido Comidas preparadas | MartÃn Sommer | C/ Araquil, 67 | Madrid | 28023 | Spain |
| 9 | Bon app’ | Laurence Lebihans | 12, rue des Bouchers | Marseille | 13008 | France |
| 10 | Bottom-Dollar Marketse | Elizabeth Lincoln | 23 Tsawassen Blvd. | Tsawassen | T2F 8M4 | Canada |
| 11 | B’s Beverages | Victoria Ashworth | Fauntleroy Circus | London | EC2 5NT | UK |
| 15 | Comércio Mineiro | Pedro Afonso | Av. dos LusÃadas, 23 | São Paulo | 05432-043 | Brazil |
Berikut ini adalah contoh dari pernyataan SQL yang memilih semua pelanggan yang berasal dari negara yang sama dengan pemasok.
SELECT *
FROM Customers
WHERE Country
IN (SELECT Country FROM Suppliers);| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
| 6 | Blauer See Delikatessen | Hanna Moos | Forsterstr. 57 | Mannheim | 68306 | Germany |
| 7 | Blondel père et fils | Frédérique Citeaux | 24, place Kléber | Strasbourg | 67000 | France |
| 8 | Bólido Comidas preparadas | MartÃn Sommer | C/ Araquil, 67 | Madrid | 28023 | Spain |
| 9 | Bon app’ | Laurence Lebihans | 12, rue des Bouchers | Marseille | 13008 | France |
| 10 | Bottom-Dollar Marketse | Elizabeth Lincoln | 23 Tsawassen Blvd. | Tsawassen | T2F 8M4 | Canada |
| 11 | B’s Beverages | Victoria Ashworth | Fauntleroy Circus | London | EC2 5NT | UK |
| 15 | Comércio Mineiro | Pedro Afonso | Av. dos LusÃadas, 23 | São Paulo | 05432-043 | Brazil |
Operator LIKE digunakan dalam WHERE untuk mencari pola tertentu atau pencarian data yang mirip dalam kolom yang sesuai dengan keinginan. Ada dua wildcard yang sering digunakan bersama dengan operator LIKE:
% : Tanda persen mewakili nol, satu, atau beberapa karakter.
_ : Garis bawah mewakili satu karakter.
Berikut merupakan contoh dari pernyataan SQL yang memilih semua pelanggan dengan NamaPelanggan dimulai dengan “a”.
SELECT *
FROM Customers
WHERE CustomerName
LIKE 'a%';| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
| 3 | Antonio Moreno TaquerÃa | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
| 3 | Antonio Moreno TaquerÃa | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
Berikut adalah beberapa contoh yang menunjukkan operator LIKE yang berbeda dengan wildcard ‘%’ dan ’_’.
-WHERE CustomerName LIKE ‘a%’ : Menemukan nilai apa pun yang dimulai dengan “a”.
-WHERE CustomerName LIKE ‘%a’ : Menemukan nilai apa pun yang diakhiri dengan “a”.
-WHERE CustomerName LIKE ‘%or%’ : Menemukan nilai apa pun yang memiliki “or” di posisi apa pun.
-WHERE CustomerName LIKE ’_r%’ : Menemukan nilai apa pun yang memiliki “r” di posisi kedua.
-WHERE CustomerName LIKE ‘a_%’ : Menemukan nilai apa pun yang dimulai dengan “a” dan panjangnya minimal 2 karakter.
-WHERE CustomerName LIKE ’a__%’ : Menemukan nilai apa pun yang dimulai dengan “a” dan panjangnya minimal 3 karakter.
Pada WHERE dapat digabungkan dengan operator AND, OR, dan NOT yang merupakan suatu perintah untuk mengintruksikan sebuah keadaan yang berbeda. Operator AND dan OR digunakan untuk memfilter record berdasarkan lebih dari satu kondisi:
Operator AND menampilkan record / 2 kondisi atau lebih yang dipisahkan oleh AND adalah TRUE.
Operator OR menampilkan record / logika dalam satu kondisi yang jika dibandingkan 2 kondisi dan yang satu salah maka jika salah satu maka OR adalah TRUE.
Operator NOT menampilkan record / logika yang berfungsi sebagai logika yang tidak kita kehendaki / NOT TRUE.
Berikut merupakan contoh dari pernyataan SQL yang memilih semua bidang dari “Pelanggan” di mana negara adalah “Jerman” DAN kota harus “Berlin” ATAU “München”.
SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
Pada SQL ORDER BY digunakan untuk memfilter atau mensortir data pada kondisi tertentu dalam urutan menaik atau menurun, berdasarkan satu atau beberapa kolom. Beberapa database mengurutkan hasil query dalam urutan menaik secara default.
SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München')
ORDER BY Country, City;| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
Jika ada sejumlah besar tupel yang memenuhi kondisi query, mungkin lebih bijaksana untuk melihat hanya segelintir tupel dalam satu waktu.
Pada LIMIT digunakan untuk untuk melakukan seleksi pada database karena jika kita memiliki banyak data maka sangat membantu pada proses seleksi nya. Limit juga digunakan untuk menentukan suatu batasan atas jumlah tupel yang dikembalikan oleh SQL.Namun limit initidak didukung oleh semua versi SQL. LIMIT dapat ditentukan menggunakan SQL 2008 OFFSET/FETCH FIRST. Ekspresi limit/offset harus berupa bilangan bulat non-negatif.
Berikut ini contoh dari syntax LIMIT untuk mengumpulkan 3 baris TOP.
SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München')
ORDER BY Country, City
LIMIT 3;| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
| 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany |
SELECT CustomerName, Address, City, Country
FROM customers
ORDER BY City, Country DESC
LIMIT 3, 5;| CustomerName | Address | City | Country |
|---|---|---|---|
| Rattlesnake Canyon Grocery | 2817 Milton Dr. | Albuquerque | USA |
| Rattlesnake Canyon Grocery | 2817 Milton Dr. | Albuquerque | USA |
| Rattlesnake Canyon Grocery | 2817 Milton Dr. | Albuquerque | USA |
| Old World Delicatessen | 2743 Bering St. | Anchorage | USA |
| Old World Delicatessen | 2743 Bering St. | Anchorage | USA |
Fungsi MIN() mengembalikan nilai terkecil dari kolom yang dipilih. Fungsi MAX() mengembalikan nilai terbesar dari kolom yang dipilih.
Berikut adalah contoh dari pernyataan SQL yang menemukan harga produk termurah.
SELECT MIN(Price) AS SmallestPrice
FROM Products;| SmallestPrice |
|---|
| 2.5 |
Berikut adalah contoh dari pernyataan SQL yang menemukan harga produk paling mahal.
SELECT MAX(Price) AS LargestPrice
FROM Products;| LargestPrice |
|---|
| 263.5 |
Fungsi COUNT() yaitu suatu fungsi yang digunakan untuk mendapatkan jumlah baris atau record dari suatu tabel atau mengembalikan jumlah baris yang cocok dengan kriteria yang ditentukan. Sedangkan Fungsi AVG() merupakan fungsi yang digunakan dalam mengembalikan nilai rata-rata kolom numerik. Fungsi SUM() digunakan untuk menjumlahkan nilai dari sekumpulan record atau mengembalikan jumlah total kolom numerik.
Berikut ini merupakan contoh dari pernyataan SQL yang menemukan harga rata-rata semua produk.
SELECT AVG(Price)
FROM Products;| AVG(Price) |
|---|
| 28.86636 |
Pada HAVING ditambahkan ke SQL karena kata kunci WHERE tidak dapat digunakan dengan fungsi agregat yang digunakan dalam pengelompokan suatu data yang mana data tersebut memiliki parameter.
Berikut ini merupakan contoh dari pernyataan SQL yang mencantumkan jumlah pelanggan di setiap negara, diurutkan dari tinggi ke rendah (Hanya sertakan negara dengan lebih dari 5 pelanggan).
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;| COUNT(CustomerID) | Country |
|---|---|
| 39 | USA |
| 33 | Germany |
| 33 | France |
| 27 | Brazil |
| 21 | UK |
| 15 | Mexico |
| 15 | Spain |
| 12 | Venezuela |
| 9 | Canada |
| 9 | Argentina |
Pernyataan CASE melewati kondisi dan mengembalikan nilai ketika kondisi pertama terpenuhi (seperti pernyataan IF-THEN-ELSE). Jadi, setelah suatu kondisi benar, itu akan berhenti membaca dan mengembalikan hasilnya. Jika tidak ada kondisi yang benar, ia mengembalikan nilai dalam klausa ELSE.
Jika tidak ada bagian ELSE dan tidak ada kondisi yang benar, ia mengembalikan NULL.
SQL berikut melewati kondisi dan mengembalikan nilai saat kondisi pertama terpenuhi.
SELECT OrderID, Quantity,
CASE
WHEN Quantity > 30 THEN 'The quantity is greater than 30'
WHEN Quantity = 30 THEN 'The quantity is 30'
ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails;| OrderID | Quantity | QuantityText |
|---|---|---|
| 10248 | 12 | The quantity is under 30 |
| 10248 | 10 | The quantity is under 30 |
| 10248 | 5 | The quantity is under 30 |
| 10249 | 9 | The quantity is under 30 |
| 10249 | 40 | The quantity is greater than 30 |
| 10250 | 10 | The quantity is under 30 |
| 10250 | 35 | The quantity is greater than 30 |
| 10250 | 15 | The quantity is under 30 |
| 10251 | 6 | The quantity is under 30 |
| 10251 | 15 | The quantity is under 30 |
SQL berikut akan mengurutkan pelanggan berdasarkan Kota. Namun, jika Kota adalah NULL, maka pesan berdasarkan Negara.
SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);| CustomerName | City | Country |
|---|---|---|
| Drachenblut Delikatessend | Aachen | Germany |
| Drachenblut Delikatessend | Aachen | Germany |
| Drachenblut Delikatessend | Aachen | Germany |
| Rattlesnake Canyon Grocery | Albuquerque | USA |
| Rattlesnake Canyon Grocery | Albuquerque | USA |
| Rattlesnake Canyon Grocery | Albuquerque | USA |
| Old World Delicatessen | Anchorage | USA |
| Old World Delicatessen | Anchorage | USA |
| Old World Delicatessen | Anchorage | USA |
| Vaffeljernet | Ã…rhus | Denmark |
# Mengatur koneksi dan simpan ke ruang kerja
library(RMySQL)
library(DBI)
library(DT)
brigita <- dbConnect(RMySQL::MySQL(),
dbname='mysql',
username='root',
password='',
host='localhost',
port=3306)
knitr::opts_chunk$set(connection = "brigita") # mengatur koneksi di Rmarkdown chunkSELECT SupplierID, SupplierName, Address, City, Country
FROM Suppliers S
ORDER BY S.SupplierName ASC;| SupplierID | SupplierName | Address | City | Country |
|---|---|---|---|---|
| 18 | Aux joyeux ecclésiastiques | 203, Rue des Francs-Bourgeois | Paris | France |
| 18 | Aux joyeux ecclésiastiques | 203, Rue des Francs-Bourgeois | Paris | France |
| 18 | Aux joyeux ecclésiastiques | 203, Rue des Francs-Bourgeois | Paris | France |
| 16 | Bigfoot Breweries | 3400 - 8th Avenue Suite 210 | Bend | USA |
| 16 | Bigfoot Breweries | 3400 - 8th Avenue Suite 210 | Bend | USA |
| 16 | Bigfoot Breweries | 3400 - 8th Avenue Suite 210 | Bend | USA |
| 5 | Cooperativa de Quesos ‘Las Cabras’ | Calle del Rosal 4 | Oviedo | Spain |
| 5 | Cooperativa de Quesos ‘Las Cabras’ | Calle del Rosal 4 | Oviedo | Spain |
| 5 | Cooperativa de Quesos ‘Las Cabras’ | Calle del Rosal 4 | Oviedo | Spain |
| 27 | Escargots Nouveaux | 22, rue H. Voiron | Montceau | France |
SELECT SupplierID, SupplierName, Address, City, Country
FROM Suppliers S
ORDER BY S.SupplierName DESC| SupplierID | SupplierName | Address | City | Country |
|---|---|---|---|---|
| 22 | Zaanse Snoepfabriek | Verkoop Rijnweg 22 | Zaandam | Netherlands |
| 22 | Zaanse Snoepfabriek | Verkoop Rijnweg 22 | Zaandam | Netherlands |
| 22 | Zaanse Snoepfabriek | Verkoop Rijnweg 22 | Zaandam | Netherlands |
| 4 | Tokyo Traders | 9-8 Sekimai Musashino-shi | Tokyo | Japan |
| 4 | Tokyo Traders | 9-8 Sekimai Musashino-shi | Tokyo | Japan |
| 4 | Tokyo Traders | 9-8 Sekimai Musashino-shi | Tokyo | Japan |
| 17 | Svensk Sjöföda AB | Brovallavägen 231 | Stockholm | Sweden |
| 17 | Svensk Sjöföda AB | Brovallavägen 231 | Stockholm | Sweden |
| 17 | Svensk Sjöföda AB | Brovallavägen 231 | Stockholm | Sweden |
| 8 | Specialty Biscuits, Ltd. | 29 King’s Way | Manchester | UK |
SELECT SupplierID, SupplierName, Address, City, Country
FROM Suppliers S
ORDER BY S.Country ASC, S.City ASC;| SupplierID | SupplierName | Address | City | Country |
|---|---|---|---|---|
| 7 | Pavlova, Ltd. | 74 Rose St. Moonie Ponds | Melbourne | Australia |
| 7 | Pavlova, Ltd. | 74 Rose St. Moonie Ponds | Melbourne | Australia |
| 7 | Pavlova, Ltd. | 74 Rose St. Moonie Ponds | Melbourne | Australia |
| 24 | G’day, Mate | 170 Prince Edward Parade Hunter’s Hill | Sydney | Australia |
| 24 | G’day, Mate | 170 Prince Edward Parade Hunter’s Hill | Sydney | Australia |
| 24 | G’day, Mate | 170 Prince Edward Parade Hunter’s Hill | Sydney | Australia |
| 10 | Refrescos Americanas LTDA | Av. das Americanas 12.890 | São Paulo | Brazil |
| 10 | Refrescos Americanas LTDA | Av. das Americanas 12.890 | São Paulo | Brazil |
| 10 | Refrescos Americanas LTDA | Av. das Americanas 12.890 | São Paulo | Brazil |
| 25 | Ma Maison | 2960 Rue St. Laurent | Montréal | Canada |
SELECT O.*, OD.Quantity
FROM Orders O
RIGHT JOIN orderdetails OD
ON O.OrderID = OD.OrderID
ORDER BY OD.Quantity DESC;| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID | Quantity |
|---|---|---|---|---|---|
| 10398 | 71 | 2 | 1996-12-30 | 3 | 120 |
| 10398 | 71 | 2 | 1996-12-30 | 3 | 120 |
| 10398 | 71 | 2 | 1996-12-30 | 3 | 120 |
| 10286 | 63 | 8 | 1996-08-21 | 3 | 100 |
| 10286 | 63 | 8 | 1996-08-21 | 3 | 100 |
| 10286 | 63 | 8 | 1996-08-21 | 3 | 100 |
| 10440 | 71 | 4 | 1997-02-10 | 2 | 90 |
| 10440 | 71 | 4 | 1997-02-10 | 2 | 90 |
| 10440 | 71 | 4 | 1997-02-10 | 2 | 90 |
| 10373 | 37 | 4 | 1996-12-05 | 3 | 80 |
SELECT P.*
FROM products P
ORDER BY P.Price DESC
LIMIT 10;| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
|---|---|---|---|---|---|
| 38 | Côte de Blaye | 18 | 1 | 12 - 75 cl bottles | 263.50 |
| 38 | Côte de Blaye | 18 | 1 | 12 - 75 cl bottles | 263.50 |
| 38 | Côte de Blaye | 18 | 1 | 12 - 75 cl bottles | 263.50 |
| 29 | Thüringer Rostbratwurst | 12 | 6 | 50 bags x 30 sausgs. | 123.79 |
| 29 | Thüringer Rostbratwurst | 12 | 6 | 50 bags x 30 sausgs. | 123.79 |
| 29 | Thüringer Rostbratwurst | 12 | 6 | 50 bags x 30 sausgs. | 123.79 |
| 9 | Mishi Kobe Niku | 4 | 6 | 18 - 500 g pkgs. | 97.00 |
| 9 | Mishi Kobe Niku | 4 | 6 | 18 - 500 g pkgs. | 97.00 |
| 9 | Mishi Kobe Niku | 4 | 6 | 18 - 500 g pkgs. | 97.00 |
| 20 | Sir Rodney’s Marmalade | 8 | 3 | 30 gift boxes | 81.00 |
SELECT P.*
FROM products P
ORDER BY P.Price DESC
LIMIT 6 OFFSET 9;| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
|---|---|---|---|---|---|
| 20 | Sir Rodney’s Marmalade | 8 | 3 | 30 gift boxes | 81.0 |
| 20 | Sir Rodney’s Marmalade | 8 | 3 | 30 gift boxes | 81.0 |
| 20 | Sir Rodney’s Marmalade | 8 | 3 | 30 gift boxes | 81.0 |
| 18 | Carnarvon Tigers | 7 | 8 | 16 kg pkg. | 62.5 |
| 18 | Carnarvon Tigers | 7 | 8 | 16 kg pkg. | 62.5 |
| 18 | Carnarvon Tigers | 7 | 8 | 16 kg pkg. | 62.5 |
SELECT DISTINCT Country
FROM suppliers S
ORDER BY S.Country ASC;| Country |
|---|
| Australia |
| Brazil |
| Canada |
| Denmark |
| Finland |
| France |
| Germany |
| Italy |
| Japan |
| Netherlands |
SELECT P.ProductName, P.Unit, P.Price
FROM products P
ORDER BY P.Price ASC
LIMIT 1;| ProductName | Unit | Price |
|---|---|---|
| Geitost | 500 g | 2.5 |
SELECT P.ProductName, P.Unit, P.Price
FROM products P
ORDER BY P.Price DESC
LIMIT 1;| ProductName | Unit | Price |
|---|---|---|
| Côte de Blaye | 12 - 75 cl bottles | 263.5 |
SELECT S.Country, COUNT(S.Country) AS 'Total_Supplier'
FROM suppliers S
WHERE S.Country='USA' ;| Country | Total_Supplier |
|---|---|
| USA | 12 |
SELECT SUM(OD.Quantity) AS 'TotalQuantity'
FROM orderdetails OD| TotalQuantity |
|---|
| 38229 |
SELECT AVG(P.Price) AS 'Average_UnitPrice'
FROM products P| Average_UnitPrice |
|---|
| 28.86636 |
SELECT C.*
FROM customers C
WHERE ContactName='Thomas Hardy';| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
SELECT C.*
FROM customers C
WHERE Country="Spain" OR Country="France";| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 7 | Blondel père et fils | Frédérique Citeaux | 24, place Kléber | Strasbourg | 67000 | France |
| 8 | Bólido Comidas preparadas | MartÃn Sommer | C/ Araquil, 67 | Madrid | 28023 | Spain |
| 9 | Bon app’ | Laurence Lebihans | 12, rue des Bouchers | Marseille | 13008 | France |
| 18 | Du monde entier | Janine Labrune | 67, rue des Cinquante Otages | Nantes | 44000 | France |
| 22 | FISSA Fabrica Inter. Salchichas S.A. | Diego Roel | C/ Moralzarzal, 86 | Madrid | 28034 | Spain |
| 23 | Folies gourmandes | Martine Rancé | 184, chaussée de Tournai | Lille | 59000 | France |
| 26 | France restauration | Carine Schmitt | 54, rue Royale | Nantes | 44000 | France |
| 29 | GalerÃa del gastrónomo | Eduardo Saavedra | Rambla de Cataluña, 23 | Barcelona | 8022 | Spain |
| 30 | Godos Cocina TÃpica | José Pedro Freyre | C/ Romero, 33 | Sevilla | 41101 | Spain |
| 40 | La corne d’abondance | Daniel Tonini | 67, avenue de l’Europe | Versailles | 78000 | France |
SELECT C.*
FROM customers C
WHERE NOT Country="USA"| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
| 3 | Antonio Moreno TaquerÃa | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
| 6 | Blauer See Delikatessen | Hanna Moos | Forsterstr. 57 | Mannheim | 68306 | Germany |
| 7 | Blondel père et fils | Frédérique Citeaux | 24, place Kléber | Strasbourg | 67000 | France |
| 8 | Bólido Comidas preparadas | MartÃn Sommer | C/ Araquil, 67 | Madrid | 28023 | Spain |
| 9 | Bon app’ | Laurence Lebihans | 12, rue des Bouchers | Marseille | 13008 | France |
| 10 | Bottom-Dollar Marketse | Elizabeth Lincoln | 23 Tsawassen Blvd. | Tsawassen | T2F 8M4 | Canada |
SELECT O.*,P.ProductID, P.ProductName, P.Price
FROM orders O
LEFT JOIN orderdetails OD
ON O.OrderID = OD.OrderID
LEFT JOIN products P
ON OD.ProductID = P.ProductID
WHERE P.Price
NOT BETWEEN 50 AND 15000;| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID | ProductID | ProductName | Price |
|---|---|---|---|---|---|---|---|
| 10248 | 90 | 5 | 1996-07-04 | 3 | 11 | Queso Cabrales | 21.00 |
| 10249 | 81 | 6 | 1996-07-05 | 1 | 14 | Tofu | 23.25 |
| 10250 | 34 | 4 | 1996-07-08 | 2 | 41 | Jack’s New England Clam Chowder | 9.65 |
| 10251 | 84 | 3 | 1996-07-08 | 1 | 22 | Gustaf’s Knäckebröd | 21.00 |
| 10252 | 76 | 4 | 1996-07-09 | 2 | 33 | Geitost | 2.50 |
| 10253 | 34 | 3 | 1996-07-10 | 2 | 31 | Gorgonzola Telino | 12.50 |
| 10253 | 34 | 3 | 1996-07-10 | 2 | 39 | Chartreuse verte | 18.00 |
| 10254 | 14 | 5 | 1996-07-11 | 2 | 24 | Guaraná Fantástica | 4.50 |
| 10255 | 68 | 9 | 1996-07-12 | 3 | 2 | Chang | 19.00 |
| 10255 | 68 | 9 | 1996-07-12 | 3 | 16 | Pavlova | 17.45 |
SELECT DISTINCT P.*
FROM products P
WHERE P.Price
BETWEEN 10 AND 20;| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
|---|---|---|---|---|---|
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18.00 |
| 2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19.00 |
| 3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10.00 |
| 15 | Genen Shouyu | 6 | 2 | 24 - 250 ml bottles | 15.50 |
| 16 | Pavlova | 7 | 3 | 32 - 500 g boxes | 17.45 |
| 21 | Sir Rodney’s Scones | 8 | 3 | 24 pkgs. x 4 pieces | 10.00 |
| 25 | NuNuCa Nuß-Nougat-Creme | 11 | 3 | 20 - 450 g glasses | 14.00 |
| 31 | Gorgonzola Telino | 14 | 4 | 12 - 100 g pkgs | 12.50 |
| 34 | Sasquatch Ale | 16 | 1 | 24 - 12 oz bottles | 14.00 |
| 35 | Steeleye Stout | 16 | 1 | 24 - 12 oz bottles | 18.00 |
SELECT DISTINCT P.*
FROM products P
WHERE P.Price
NOT BETWEEN 10 AND 100
ORDER BY P.Price ASC;| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
|---|---|---|---|---|---|
| 33 | Geitost | 15 | 4 | 500 g | 2.50 |
| 24 | Guaraná Fantástica | 10 | 1 | 12 - 355 ml cans | 4.50 |
| 13 | Konbu | 6 | 8 | 2 kg box | 6.00 |
| 52 | Filo Mix | 24 | 5 | 16 - 2 kg boxes | 7.00 |
| 54 | Tourtière | 25 | 6 | 16 pies | 7.45 |
| 75 | Rhönbräu Klosterbier | 12 | 1 | 24 - 0.5 l bottles | 7.75 |
| 23 | Tunnbröd | 9 | 5 | 12 - 250 g pkgs. | 9.00 |
| 19 | Teatime Chocolate Biscuits | 8 | 3 | 10 boxes x 12 pieces | 9.20 |
| 45 | Røgede sild | 21 | 8 | 1k pkg. | 9.50 |
| 47 | Zaanse koeken | 22 | 3 | 10 - 4 oz boxes | 9.50 |
SELECT O.OrderID, O.OrderDate, sum(OD.Quantity) AS 'AmountSold'
FROM orders O
JOIN orderdetails OD
ON O.OrderID = OD.OrderID
GROUP BY O.OrderID
HAVING O.OrderDate
BETWEEN '1996-01-01' AND '1996-12-31'
ORDER BY O.OrderDate;| OrderID | OrderDate | AmountSold |
|---|---|---|
| 10248 | 1996-07-04 | 81 |
| 10249 | 1996-07-05 | 147 |
| 10250 | 1996-07-08 | 180 |
| 10251 | 1996-07-08 | 123 |
| 10252 | 1996-07-09 | 315 |
| 10253 | 1996-07-10 | 306 |
| 10254 | 1996-07-11 | 171 |
| 10255 | 1996-07-12 | 330 |
| 10256 | 1996-07-15 | 81 |
| 10257 | 1996-07-16 | 138 |
SELECT S.*
FROM suppliers S
WHERE S.Country
IN ('USA', 'UK', 'JAPAN');| SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
|---|---|---|---|---|---|---|---|
| 1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
| 2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
| 3 | Grandma Kelly’s Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
| 4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
| 6 | Mayumi’s | Mayumi Ohno | 92 Setsuko Chuo-ku | Osaka | 545 | Japan | (06) 431-7877 |
| 8 | Specialty Biscuits, Ltd. | Peter Wilson | 29 King’s Way | Manchester | M14 GSD | UK | (161) 555-4448 |
| 16 | Bigfoot Breweries | Cheryl Saylor | 3400 - 8th Avenue Suite 210 | Bend | 97101 | USA | (503) 555-9931 |
| 19 | New England Seafood Cannery | Robb Merchant | Order Processing Dept. 2100 Paul Revere Blvd. | Boston | 2134 | USA | (617) 555-3267 |
| 1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
| 2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
SELECT P.*
FROM products P
WHERE P.Price
NOT IN (10, 20, 30, 40, 50);| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
|---|---|---|---|---|---|
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18.00 |
| 2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19.00 |
| 4 | Chef Anton’s Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22.00 |
| 5 | Chef Anton’s Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
| 6 | Grandma’s Boysenberry Spread | 3 | 2 | 12 - 8 oz jars | 25.00 |
| 9 | Mishi Kobe Niku | 4 | 6 | 18 - 500 g pkgs. | 97.00 |
| 10 | Ikura | 4 | 8 | 12 - 200 ml jars | 31.00 |
| 11 | Queso Cabrales | 5 | 4 | 1 kg pkg. | 21.00 |
| 12 | Queso Manchego La Pastora | 5 | 4 | 10 - 500 g pkgs. | 38.00 |
| 13 | Konbu | 6 | 8 | 2 kg box | 6.00 |
SELECT C.CustomerName, S.SupplierName, C.Country AS 'CustomerCountry', S.Country AS 'SupplierCountry'
FROM customers C
JOIN Orders O
ON C.CustomerID=O.CustomerID
JOIN OrderDetails OD
ON O.OrderID=OD.OrderID
JOIN Products P
ON OD.ProductID=P.ProductID
JOIN Suppliers S
ON P.SupplierID=S.SupplierID
WHERE
CASE
WHEN C.Country=S.Country THEN '1'
ELSE '0'
END = '1';| CustomerName | SupplierName | CustomerCountry | SupplierCountry |
|---|---|---|---|
| Rattlesnake Canyon Grocery | New Orleans Cajun Delights | USA | USA |
| Rattlesnake Canyon Grocery | New Orleans Cajun Delights | USA | USA |
| Rattlesnake Canyon Grocery | New Orleans Cajun Delights | USA | USA |
| Rattlesnake Canyon Grocery | New Orleans Cajun Delights | USA | USA |
| Rattlesnake Canyon Grocery | New Orleans Cajun Delights | USA | USA |
| Rattlesnake Canyon Grocery | New Orleans Cajun Delights | USA | USA |
| Rattlesnake Canyon Grocery | New Orleans Cajun Delights | USA | USA |
| Rattlesnake Canyon Grocery | New Orleans Cajun Delights | USA | USA |
| Rattlesnake Canyon Grocery | New Orleans Cajun Delights | USA | USA |
| Rattlesnake Canyon Grocery | Grandma Kelly’s Homestead | USA | USA |
SELECT P.ProductName
FROM products P
WHERE ProductName LIKE 'Cha_' OR ProductName LIKE 'Chan_';| ProductName |
|---|
| Chang |
| Chang |
| Chang |
Karena tidak ada kolom nomor faks dalam database, kami berasumsi bahwa semua pemasok tidak memiliki nomor faks.
SELECT CustomerName, AVG(TotalOrderAmount) AS AverageOrder
FROM
(
SELECT CustomerName, SUM(OD.Quantity*P.Price) AS TotalOrderAmount
FROM customers C
JOIN orders O
ON C.CustomerID = O.CustomerID
JOIN orderdetails OD
ON O.OrderID = OD.OrderID
JOIN products P
ON OD.ProductID = P.ProductID
GROUP BY OD.OrderID
) S
GROUP BY S.CustomerName
HAVING AverageOrder
BETWEEN 1000 AND 1200
ORDER BY AverageOrder ASC;| CustomerName | AverageOrder |
|---|
SELECT C.Country, COUNT(C.Country) AS 'TotalCustomer'
FROM customers C
GROUP BY C.Country WITH ROLLUP| Country | TotalCustomer |
|---|---|
| Argentina | 9 |
| Austria | 6 |
| Belgium | 6 |
| Brazil | 27 |
| Canada | 9 |
| Denmark | 6 |
| Finland | 6 |
| France | 33 |
| Germany | 33 |
| Ireland | 3 |