Code
Database System
Tugas 3
1. INTRODUCTION
Database Relasional tentunya memiliki sebuah kekuatan yang terletak pada kemampuan dalam mengambil serta menganalisis data dengan cepat dimana dengan menjalankan QUERY. Query ini merupakan sebuah permintaan akan informasi dimana meliputi informasi yang diterima ataupun diambil dari database. Jadi Query ini akan mengambil sebuah informasi dari satu ataupun beberapa tabel dengan berdasar pada serangkaian kondisi pencarian yang ditetapkan.
Langkah pertama yang harus dilakukan adalah menghubungkan kedatabase kita.
# Mengatur koneksi dan penyimpanan kedalam ruang kerja
library (RMySQL)
library (DBI)
Clara <- dbConnect (RMySQL:: MySQL (),
dbname= 'new_mariadb' ,
username= 'root' ,
password= '' ,
host= 'localhost' ,
port= 3306 )
knitr:: opts_chunk$ set (connection = "Clara" ) # Untuk mengatur koneksi pada Rmarkdown
2. SELECT
SQL SELECT digunakan dalam mengambil suatu data dari tabel-tabel database dimana akan mengembalikan data tersebut kedalam bentuk tabel hasil yang disebut result-sets. Sintaks dasarnya adalah
Dapat mengasumsikan coloumn1,coloumn2,coloumnN,... sebuah kolom atau bidang tabel yang akan diambil nilainya dan jika ingin mengambil beberapa bidang atau kolom yang tersedia dapat menggunakan sintaks :
SELECT CustomerName, Address, City, Country
FROM CUSTOMERS;
Displaying records 1 - 10
Alfreds Futterkiste
Obere Str. 57
Hamburg
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 seluruh kolom tabel “CUSTOMERS” kita dapat menggunakan queri :
Displaying records 1 - 10
1
Alfreds Futterkiste
Alfreds Mario
Obere Str. 57
Hamburg
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
3. DISTINCT
SQL DISTINCT diguanakan secara bersamaan dengan SELECT dalam menghilangkan seluruh catatan duplikat dimana hanya mengambil sebuah catatan yang unik ataupun berbeda pada suatu data. Jadi didalam sebuah tabel, kolom sering berisi banyak nilai duplikat dan perintah tersebut hanya menampilkan nilai yang berbeda dari suatu data.
Sintaks dasar kata kunci DISTINCT untuk menghilangkan rekaman duplikat:
SELECT DISTINCT column_name
FROM table_name
Contohnya adalah mengambil kolom Country dari Data Customers dimana terdapat 21 data yang berbeda.
SELECT DISTINCT Country
FROM customers;
Displaying records 1 - 10
Germany
Mexico
UK
Sweden
France
Spain
Canada
Argentina
Switzerland
Brazil
4. WHERE
WHERE digunakan dalam memfilter atau menyaring record dimana untuk mengekstrak record yang memenuhi sebuah persyaratan tertentu.
SELECT column1, column2, ...
FROM table_name
WHERE [condition];
WHERE digunakan dalam pernyataan UPDATE,DELETE,Dll.
Contohnya dalam memilih seluruh pelanggan dari negara “MEKSIKO” pada data “CUSTOMERS”.
SELECT *
FROM Customers
WHERE Country= 'Mexico' ;
5 records
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
Beberapa Operator yang dapat digunakan dalam klausa WHERE adalah :
=
Sama Dengan
>
Lebih Besar
<
Lebih Kecil
>=
Lebih Besar sama dengan
<=
lebih kecil sama dengan
<>
Tidak Sama dengan , Versi SQL = !=
IS NULL or IS NOT NUL
Kolom dengan nilai NULL merupakan kolom tanpa nilai
BETWEEN
antara sebuah rentang tertentu
LIKE
Mencari sebuah polla pattern.
IN
Menentukan beberapa kemungkinan nilai pada kolom
5. BETWEEN
Operator ini dapat menentukan atau memilih nilai dalam rentang tertentu, dimana nilainya tersebut dapat berupa angka, teks ataupun tanggal. Operator BETWEEN ini bersifat inklusif dimana nantinya nilai awal dan akhir disertakan atau dimasukkan.
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2;
Contohnya adalah memilih semua produk dengan harga antara 10 dan 20:
SELECT *
FROM Products
WHERE Price
BETWEEN 10 AND 20 ;
Displaying records 1 - 10
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
Contoh Selanjutnya adalah memilih orderDate antara 01-July-1996 dan 31-July-1996.
SELECT *
FROM Orders
WHERE OrderDate
BETWEEN '1996-07-01' AND '1996-07-31'
Displaying records 1 - 10
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
6. IN
Operator ini dapat menentukan beberapa nilai yang terkandung dalam WHERE.
SELECT column_name(s)
FROM table_name
WHERE column_name
IN (SELECT STATEMENT);
Contoh memilih seluruh CUSTOMERS yang berlokasi di “Germany”,“France” atau “UK”
SELECT *
FROM Customers
WHERE Country
IN ('Germany' , 'France' , 'UK' );
Displaying records 1 - 10
1
Alfreds Futterkiste
Alfreds Mario
Obere Str. 57
Hamburg
12209
Germany
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
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
9
Bon app’
Laurence Lebihans
12, rue des Bouchers
Marseille
13008
France
11
B’s Beverages
Victoria Ashworth
Fauntleroy Circus
London
EC2 5NT
UK
16
Consolidated Holdings
Elizabeth Brown
Berkeley Gardens 12 Brewery
London
WX1 6LT
UK
17
Drachenblut Delikatessend
Sven Ottlieb
Walserweg 21
Aachen
52066
Germany
18
Du monde entier
Janine Labrune
67, rue des Cinquante Otages
Nantes
44000
France
19
Eastern Connection
Ann Devon
35 King George
London
WX3 6FW
UK
Contoh selanjutnya adalah memilih seluruh CUSTOMERS dari negara yang sama dengan pemasok
SELECT *
FROM Customers
WHERE Country
IN (SELECT Country FROM Suppliers);
Displaying records 1 - 10
1
Alfreds Futterkiste
Alfreds Mario
Obere Str. 57
Hamburg
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
7. LIKE
LIKE digunakan dalam mencari pola tertentu pada kolom dimana terdapat 2 wildcard yang sering digunakan secara bersamaan dengan operator LIKE, yaitu :
% : Tanda persen mewakili nol, satu, atau beberapa karakter
_ Garis bawah mewakili satu karakter
Syntax Dasarnya adalah
SELECT column1, column2, ...
FROM table_name
WHERE column LIKE pattern;
Contohnya dalam emmilih seluruh CUSTOMERS dengan Nama Pelanggan dimulai dengan huruf “a”.
SELECT *
FROM Customers
WHERE CustomerName
LIKE 'a%' ;
4 records
1
Alfreds Futterkiste
Alfreds Mario
Obere Str. 57
Hamburg
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
Beberapa contoh yang menunjukkan operator LIKE yang berbeda dengan wildcard ‘%’ dan ’_’.
WHERE CustomerName LIKE ‘a%’
Menemukan nilai yang dimulai dengan “a”
WHERE CustomerName LIKE ‘%a’
Menemukan nilai yang diakhiri dengan “a”
WHERE CustomerName LIKE ‘%or%’
Menemukan nilai yang memiliki “or” pada posisi manapun
WHERE CustomerName LIKE ’_r%’
Menemukan nilai apa pun yang memiliki “r” pada 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
8. AND,OR,and NOT
WHERE dapat digabungkan dengan operator AND, OR, dan NOT.
AND = menampilkan record jika semua kondisi yang dipisahkan oleh AND adalah TRUE.
OR = menampilkan record jika salah satu kondisi yang dipisahkan oleh OR adalah TRUE.
NOT = menampilkan record jika kondisi NOT TRUE.
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 OR condition3 NOT condition4
Contoh memilih seluruh kolom dari data CUSTOMERS dimana negaranya “Germany” dan Kota “Berlin” ATAU “München”.
SELECT * FROM Customers
WHERE Country= 'Germany' AND (City= 'Berlin' OR City= 'München' );
1 records
25
Frankenversand
Peter Franken
Berliner Platz 43
München
80805
Germany
9. ORDER BY
SQL ORDER BY digunakan dalam mengurutkan suatu data dimana dalam urutan menaik maupun menurun dengan berdasarkan pada satu atau beberapa kolom. Sintaks dasar ORDER BY adalah sebagai berikut:
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
Secara umum ataupun default ORDER BY mengurutkan sebuah data dalam urutan menaik.Untuk mengurutkan data dalam urutan menurun kita dapat menggunakan kata Kunci DESC lalu untuk mengurutkan dalam urutan Menaik dapat menggunakan kata Kunci ASC. Kita dapat menggunakan lebih dari satu kolom dalam ORDER BY. Namun untuk mengurutkan kolom yang ada pada daftar blok diharuskan memastikan kolom yang digunakan. Blok kode berikut memiliki contoh, yang akan mengurutkan hasilnya dalam urutan menaik berdasarkan Kota dan Negara:
SELECT * FROM Customers
WHERE Country= 'Germany' AND (City= 'Berlin' OR City= 'München' )
ORDER BY Country, City;
1 records
25
Frankenversand
Peter Franken
Berliner Platz 43
München
80805
Germany
10. LIMIT
Jika terdapat beberapa tupel yang memenuhi kondisi QUERY akan lebih mudah melihat hanya dalam satu waktu.
Digunakan untuk Menetapkan Batas atas Jumlah Tupel yang dikembalikan oleh SQL
Dapat ditentukan menggunakan klausa SQL 2008 OFFSET/FETCH FIRST.
Ekspresi limit/offset harus berupa bilangan bulat non-negatif.
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC]
LIMIT rows_to_skip, next_rows_to_skip;
Contoh mengumpulkan 3 baris TOP
SELECT * FROM Customers
WHERE Country= 'Germany' AND (City= 'Berlin' OR City= 'München' )
ORDER BY Country, City
LIMIT 3 ;
1 records
25
Frankenversand
Peter Franken
Berliner Platz 43
München
80805
Germany
Contoh Selanjutnya mengumpulkan 5 baris TOP setelah 3 baris TOP
SELECT CustomerName, Address, City, Country
FROM customers
ORDER BY City, Country DESC
LIMIT 3 , 5 ;
5 records
Vaffeljernet
Smagsløget 45
Ã…rhus
Denmark
GalerÃa del gastrónomo
Rambla de Cataluña, 23
Barcelona
Spain
LILA-Supermercado
Carrera 52 con Ave. BolÃvar #65-98 Llano Largo
Barquisimeto
Venezuela
Magazzini Alimentari Riuniti
Via Ludovico il Moro 22
Bergamo
Italy
Chop-suey Chinese
Hauptstr. 29
Bern
Switzerland
11. MIN and MAX
Fungsi MIN() = Mengembalikan nilai terkecil dari kolom yang dipilih.
Fungsi MAX() = Mengembalikan nilai terbesar dari kolom yang dipilih.
SELECT MIN/MAX(column_name)
FROM table_name
WHERE condition;
Contoh menemukan harga produk yang termurah :
SELECT MIN (Price) AS SmallestPrice
FROM Products;
Contoh Selanjutnya menemukan harga produk yang termahal :
SELECT MAX (Price) AS LargestPrice
FROM Products;
12. COUNT,SUM,and AVG
Fungsi COUNT() digunakan untuk mengembalikan jumlah baris yang sesuai dengan kriteria yang sudah ditentukan.
Fungsi AVG() digunakan dalam mengembalikan nilai rata-rata pada kolom numerik.
Fungsi SUM() digunakan dalam mengembalikan jumlah total pada kolom numerik.
SELECT COUNT/SUM/AVG(column_name)
FROM table_name
WHERE condition;
Contoh Mencari Jumlah Baris Harga pada semua products
SELECT COUNT (Price)
FROM Products;
Contoh Selanjutnya Mencari Rata-Rata Harga pada semua products
SELECT AVG (Price)
FROM Products;
Contoh Selanjutnya Mencari Jumlah Harga pada semua products
SELECT SUM (Price)
FROM Products;
13. HAVING
Pada SQL, HAVING ditambahkan dikarenakan kata kunci WHERE tidak daoat digunakan dengan fungsi agregat.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
Contoh mencantumkan jumlah pelanggan pada setiap negara yang diurutkan dari tinggi ke rendah dengan lebih dari 5 pelanggan.
SELECT COUNT (CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT (CustomerID) > 5
ORDER BY COUNT (CustomerID) DESC ;
5 records
13
USA
11
Germany
11
France
9
Brazil
7
UK
14. CASE
CASE mengembalikan nilai saat pada kondisi seperti pernyataan IF-THEN-ELSE terpenuhi. Jadi jika suatu kondisi benar-benar terpenuhi itu nanti akan berhenti membaca serta mengembalikan hasilnya. namun jika tidak terdapat kondisi yang benar atau terpenuhi, maka akan mengembalikan nilai dalam ELSE. Jika tidak terdapat ELSE dan tidak terdapat kondisi yang benar atau terpenuhi, akan mengembalikan NULL.
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
Contoh SQL 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;
Displaying records 1 - 10
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
Contoh selanjutnya mengurutkan CUSTOMERS berdasarkan Kota namun Jika Kota NULL maka berdasarkan Negara.
SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END );
Displaying records 1 - 10
Drachenblut Delikatessend
Aachen
Germany
Rattlesnake Canyon Grocery
Albuquerque
USA
Old World Delicatessen
Anchorage
USA
Vaffeljernet
Ã…rhus
Denmark
GalerÃa del gastrónomo
Barcelona
Spain
LILA-Supermercado
Barquisimeto
Venezuela
Magazzini Alimentari Riuniti
Bergamo
Italy
Chop-suey Chinese
Bern
Switzerland
Save-a-lot Markets
Boise
USA
Folk och fä HB
Bräcke
Sweden
15. EXERCISE
Menghubungkan ke dalam database kita.
# Mengatur koneksi dan penyimpanan kedalam ruang kerja
library (RMySQL)
library (DBI)
Clara <- dbConnect (RMySQL:: MySQL (),
dbname= 'new_mariadb' ,
username= 'root' ,
password= '' ,
host= 'localhost' ,
port= 3306 )
knitr:: opts_chunk$ set (connection = "Clara" ) # Untuk mengatur koneksi pada Rmarkdown
a. Memilih Beberapa atribut pemasok dalam urutan abjad
SELECT SupplierID, SupplierName, Address, City, Country
FROM Suppliers S
ORDER BY S.SupplierName ASC ;
Displaying records 1 - 10
18
Aux joyeux ecclésiastiques
203, Rue des Francs-Bourgeois
Paris
France
16
Bigfoot Breweries
3400 - 8th Avenue Suite 210
Bend
USA
5
Cooperativa de Quesos ‘Las Cabras’
Calle del Rosal 4
Oviedo
Spain
27
Escargots Nouveaux
22, rue H. Voiron
Montceau
France
1
Exotic Liquid
49 Gilbert St.
Londona
UK
29
Forêts d’érables
148 rue Chasseur
Ste-Hyacinthe
Canada
14
Formaggi Fortini s.r.l.
Viale Dante, 75
Ravenna
Italy
24
G’day, Mate
170 Prince Edward Parade Hunter’s Hill
Sydney
Australia
28
Gai pâturage
Bat. B 3, rue des Alpes
Annecy
France
3
Grandma Kelly’s Homestead
707 Oxford Rd.
Ann Arbor
USA
b. Memilih Beberapa atribut pemasok dalam urutan abjad terbalik!
SELECT SupplierID, SupplierName, Address, City, Country
FROM Suppliers S
ORDER BY S.SupplierName DESC ;
Displaying records 1 - 10
22
Zaanse Snoepfabriek
Verkoop Rijnweg 22
Zaandam
Netherlands
4
Tokyo Traders
9-8 Sekimai Musashino-shi
Tokyo
Japan
17
Svensk Sjöföda AB
Brovallavägen 231
Stockholm
Sweden
8
Specialty Biscuits, Ltd.
29 King’s Way
Manchester
UK
10
Refrescos Americanas LTDA
Av. das Americanas 12.890
São Paulo
Brazil
12
Plutzer Lebensmittelgroßmärkte AG
Bogenallee 51
Frankfurt
Germany
9
PB Knäckebröd AB
Kaloadagatan 13
Göteborg
Sweden
7
Pavlova, Ltd.
74 Rose St. Moonie Ponds
Melbourne
Australia
26
Pasta Buttini s.r.l.
Via dei Gelsomini, 153
Salerno
Italy
15
Norske Meierier
Hatlevegen 5
Sandvika
Norway
c. Beberapa atribut pemasok dipesan berdasarkan negara, lalu berdasarkan kota!
SELECT SupplierID, SupplierName, Address, City, Country
FROM Suppliers S
ORDER BY S.Country ASC , S.City ASC ;
Displaying records 1 - 10
7
Pavlova, Ltd.
74 Rose St. Moonie Ponds
Melbourne
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
25
Ma Maison
2960 Rue St. Laurent
Montréal
Canada
29
Forêts d’érables
148 rue Chasseur
Ste-Hyacinthe
Canada
21
Lyngbysild
Lyngbysild Fiskebakken 10
Lyngby
Denmark
23
Karkki Oy
Valtakatu 12
Lappeenranta
Finland
28
Gai pâturage
Bat. B 3, rue des Alpes
Annecy
France
27
Escargots Nouveaux
22, rue H. Voiron
Montceau
France
18
Aux joyeux ecclésiastiques
203, Rue des Francs-Bourgeois
Paris
France
e. Semua pesanan, diurutkan berdasarkan jumlah total dengan nilai yang terbesar dahulu.
SELECT O.* , OD.Quantity
FROM Orders O
RIGHT JOIN orderdetails OD
ON O.OrderID = OD.OrderID
ORDER BY OD.Quantity DESC ;
Displaying records 1 - 10
10398
71
2
1996-12-30
3
120
10286
63
8
1996-08-21
3
100
10440
71
4
1997-02-10
2
90
10373
37
4
1996-12-05
3
80
10359
72
5
1996-11-21
3
80
10345
63
2
1996-11-04
2
80
10442
20
3
1997-02-11
2
80
10324
71
9
1996-10-08
1
80
10351
20
1
1996-11-11
1
77
10401
65
1
1997-01-01
1
70
f. mendapatkan semua kecuali 10 produk paling mahal yang diurutkan dengan berdasarkan harga
SELECT P.*
FROM products P
ORDER BY P.Price DESC
LIMIT 10 ;
Displaying records 1 - 10
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
9
Mishi Kobe Niku
4
6
18 - 500 g pkgs.
97.00
20
Sir Rodney’s Marmalade
8
3
30 gift boxes
81.00
18
Carnarvon Tigers
7
8
16 kg pkg.
62.50
59
Raclette Courdavault
28
4
5 kg pkg.
55.00
51
Manjimup Dried Apples
24
7
50 - 300 g pkgs.
53.00
62
Tarte au sucre
29
3
48 pies
49.30
43
Ipoh Coffee
20
1
16 - 500 g tins
46.00
28
Rössle Sauerkraut
12
7
25 - 825 g cans
45.60
g. Mendapatkan produk termahal ke-10 hingga ke-15 yang diurutkan dengan berdasarkan harga
SELECT P.*
FROM products P
ORDER BY P.Price DESC
LIMIT 6 OFFSET 9 ;
6 records
28
Rössle Sauerkraut
12
7
25 - 825 g cans
45.6
63
Vegie-spread
7
2
15 - 625 g jars
43.9
27
Schoggi Schokolade
11
3
100 - 100 g pieces
43.9
8
Northwoods Cranberry Sauce
3
2
12 - 12 oz jars
40.0
17
Alice Mutton
7
6
20 - 1 kg tins
39.0
12
Queso Manchego La Pastora
5
4
10 - 500 g pkgs.
38.0
h. Seluruh daftar semua negara pemasok dalam urutan abjad
SELECT DISTINCT Country
FROM suppliers S
ORDER BY S.Country ASC ;
Displaying records 1 - 10
Australia
Brazil
Canada
Denmark
Finland
France
Germany
Italy
Japan
Netherlands
i. Menemukan produk termurah dan Pesanan Mahal.
SELECT P.ProductName, P.Unit, P.Price
FROM products P
ORDER BY P.Price ASC
LIMIT 1 ;
1 records
Geitost
500 g
2.5
SELECT P.ProductName, P.Unit, P.Price
FROM products P
ORDER BY P.Price DESC
LIMIT 1 ;
1 records
Côte de Blaye
12 - 75 cl bottles
263.5
j. Menemukan nomor Supplier USA
SELECT S.Country, COUNT (S.Country) AS 'Total_Supplier'
FROM suppliers S
WHERE S.Country= 'USA' ;
k.Menghitung jumlah total orderitem
SELECT SUM (OD.Quantity) AS 'TotalQuantity'
FROM orderdetails OD
l. Menghitung Harga Satuan rata-rata dari semua produk
SELECT AVG (P.Price) AS 'Average_UnitPrice'
FROM products P
n. Mendata semua pelanggan dari Spanyol atau Prancis
SELECT C.*
FROM customers C
WHERE Country= "Spain" OR Country= "France" ;
Displaying records 1 - 10
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
o. Mendata semua pelanggan yang bukan dari AS
SELECT C.*
FROM customers C
WHERE NOT Country= "USA"
Displaying records 1 - 10
1
Alfreds Futterkiste
Alfreds Mario
Obere Str. 57
Hamburg
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
p. Mendata semua pesanan yang tidak antara $50 dan $15000!
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 ;
Displaying records 1 - 10
10248
90
5
1996-07-04
3
11
Queso Cabrales
21.00
10248
90
5
1996-07-04
3
42
Singaporean Hokkien Fried Mee
14.00
10248
90
5
1996-07-04
3
72
Mozzarella di Giovanni
34.80
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
10250
34
4
1996-07-08
2
65
Louisiana Fiery Hot Pepper Sauce
21.05
10251
84
3
1996-07-08
1
22
Gustaf’s Knäckebröd
21.00
10251
84
3
1996-07-08
1
57
Ravioli Angelo
19.50
10251
84
3
1996-07-08
1
65
Louisiana Fiery Hot Pepper Sauce
21.05
10252
76
4
1996-07-09
2
33
Geitost
2.50
q. Mendata semua produk antara $10 dan $20
SELECT DISTINCT P.*
FROM products P
WHERE P.Price
BETWEEN 10 AND 20 ;
Displaying records 1 - 10
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
r. Mendata semua produk tidak antara $10 dan $100 diurutkan berdasarkan harga
SELECT DISTINCT P.*
FROM products P
WHERE P.Price
NOT BETWEEN 10 AND 100
ORDER BY P.Price ASC ;
Displaying records 1 - 10
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
s. Mendapatkan daftar pesanan dan jumlah yang terjual antara 01 Jan 1996 dan 31 Des 1996
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;
Displaying records 1 - 10
10248
1996-07-04
27
10249
1996-07-05
49
10250
1996-07-08
60
10251
1996-07-08
41
10252
1996-07-09
105
10253
1996-07-10
102
10254
1996-07-11
57
10255
1996-07-12
110
10256
1996-07-15
27
10257
1996-07-16
46
t. Mendata semua pemasok dari AS, Inggris, ATAU Jepang
SELECT S.*
FROM suppliers S
WHERE S.Country
IN ('USA' , 'UK' , 'JAPAN' );
8 records
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
u. Mendata semua produk yang tidak persis $10, $20, $30, $40, atau $50
SELECT P.*
FROM products P
WHERE P.Price
NOT IN (10 , 20 , 30 , 40 , 50 );
Displaying records 1 - 10
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
v. Mendata semua pelanggan yang berasal dari negara yang sama dengan pemasok
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' ;
Displaying records 1 - 10
Old World Delicatessen
New England Seafood Cannery
USA
USA
Rattlesnake Canyon Grocery
New Orleans Cajun Delights
USA
USA
Rattlesnake Canyon Grocery
Grandma Kelly’s Homestead
USA
USA
Morgenstern Gesundkost
Plutzer Lebensmittelgroßmärkte AG
Germany
Germany
Berglunds snabbköp
Svensk Sjöföda AB
Sweden
Sweden
Lehmanns Marktstand
Heli Süßwaren GmbH & Co. KG
Germany
Germany
B’s Beverages
Exotic Liquid
UK
UK
Blondel père et fils
Aux joyeux ecclésiastiques
France
France
Die Wandernde Kuh
Plutzer Lebensmittelgroßmärkte AG
Germany
Germany
Die Wandernde Kuh
Plutzer Lebensmittelgroßmärkte AG
Germany
Germany
w. Mendata semua produk yang dimulai dengan ‘Cha’ atau ‘Chan’ dan memiliki satu karakter lagi
SELECT P.ProductName
FROM products P
WHERE ProductName LIKE 'Cha_' OR ProductName LIKE 'Chan_' ;
x. Mendata semua pemasok yang memiliki nomor faks
Dalam Database tidak terdapat nomor Fax pada data suppliers dan hanya terdapat supplier ID dalam bentuk Integer.
y. Mendata semua pelanggan dengan pesanan rata-rata antara $1000 dan $1200!
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 ;
6 records
Que DelÃcia
1012.275
Königlich Essen
1039.375
Tortuga Restaurante
1067.350
Folk och fä HB
1078.475
Magazzini Alimentari Riuniti
1080.300
Chop-suey Chinese
1124.500
z. Mendata total pelanggan di setiap negara.
SELECT C.Country, COUNT (C.Country) AS 'TotalCustomer'
FROM customers C
GROUP BY C.Country WITH ROLLUP
Displaying records 1 - 10
Argentina
3
Austria
2
Belgium
2
Brazil
9
Canada
3
Denmark
2
Finland
2
France
11
Germany
11
Ireland
1