(Day 2) Data Enthusiast Camp - Intermediate SQL
(Day 2) Data Enthusiast Camp - Intermediate SQL
CONTENT (Day 2)
• SQL Aggregate Function
03
Tujuan utama dari data cleansing adalah untuk memastikan bahwa data yang digunakan dalam analisis,
pelaporan, atau aplikasi komputasi lainnya adalah akurat, konsisten, dan dapat diandalkan.
Ada beberapa cara untuk menangani nilai null yang disesuaikan dengan tipe data, konteks/kebutuhan,
dan proporsi nilai null.
1. Hapus Baris dengan Nilai NULL. Contoh jika ingin menghapus baris dengan nilai NULL dalam
kolom "column_name":
DELETE FROM your_dataset.your_table
WHERE column_name IS NULL;
2. Ganti Nilai NULL dengan Nilai Lain. Contoh jika ingin mengganti nilai NULL dalam kolom
"column_name" dengan nilai rata-rata dari kolom tersebut:
UPDATE your_dataset.your_table
SET column_name = AVG(column_name)
WHERE column_name IS NULL;
DATA CLEANSING
2 Menangani Null Value
1. Pergantian nilai NULL dengan nilai lain perlu disesuaikan dengan jenis datanya.
Umumnya, tipe data string menggunakan modus, sedangkan tipe data numerik menggunakan
rata-rata atau median (jika range datanya cukup jauh) untuk mengganti nilai NULL.
2. Ketika memutuskan untuk menghapus atau mengganti nilai NULL, perlu dipertimbangkan
juga proporsi nilai NULL dengan nilai yang sudah terisi.
Jika nilai NULL terlalu banyak dan jika diganti dengan modus/rata-rata/median dapat mempengaruhi
karakteristik data secara keseluruhan, maka baris/kolom yang berisi nilai NULL tersebut sebaiknya
dihapus.
DATA CLEANSING
3 Perubahan Tipe Data
kolom yang tipe datanya sudah diganti SELECT CAST(age AS INT64) AS age_int
FROM dataset.raw_data;
Penghapusan outlier dapat dilakukan berdasarkan kriteria tertentu dengan menggunakan klausa
WHERE. Contohnya kriteria yang ditetapkan berada dalam rentang tertentu antara min_value dan
max_value:
● bikeshare_station_status
● bikeshare_trips Cara copy Dataset dan
Table ID:
1. Klik titik tiga di Dataset
atau Table
2. Pilih Copy ID
08
No Context
Make It Better
SQL INTERMEDIATE
03
FUNCTION
sql intermediate Function
query: join
● Join berfungsi untuk menggabungkan 2 atau lebih table
○ Inner join
○ Left join
○ Right join
○ Outer join
query: join
Contoh query LEFT JOIN:
● Jika kita ingin menampilkan nama-nama station dan nama asal regionnya, kita bisa menggabungkan
tabel bikeshare_station_info dan tabel bikeshare_region menggunakan region_id. Karena nama
asal region tidak tersedia di bikeshare_station_info, namun hanya tersedia di tabel
bikeshare_region.
SELECT
i.name AS Station_Name,
r.name AS Region_Name
FROM
bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info AS i
LEFT JOIN
bigquery-public-data.san_francisco_bikeshare.bikeshare_regions AS r
ON
i.region_id = r.region_id;
query: GROUP BY
● Digunakan untuk mengelompokkan suatu data berdasarkan kolom tertentu
● Biasanya diikuti fungsi agregasi untuk melakukan perhitungan. Contoh:
○ Nilai max, di group berdasarkan nama customer
○ Nilai minimum, di group berdasarkan hari
○ Nilai sum profit, di group berdasarkan customer id
SELECT
start_station_name,
MAX(duration_sec) AS max_duration,
MIN(duration_sec) AS min_duration
FROM
bigquery-public-data.san_francisco_bikeshare.bikeshare_trips
GROUP BY
start_station_name
ORDER BY
MAX(duration_sec) DESC;
LIKE
● Melihat kecocokan dengan pola yang diinginkan, bisa dari huruf awal, huruf terakhir, dan pola-pola lainnya
SELECT *
FROM bigquery-public-data.san_francisco_bikeshare.bikeshare_trips
WHERE start_date BETWEEN '2018-04-01' AND '2018-04-30';
SQL STRING & DATE
04
FUNCTION
STRING FUNCTION
● Proses manipulasi data string dapat dilakukan dengan fungsi:
○ Concat
○ Replace
○ Substr
SELECT start_station_name,
REPLACE(start_station_name,'Japan','Japanese') as start_station_name_new
FROM bigquery-public-data.san_francisco_bikeshare.bikeshare_trips;
STRING FUNCTION
Contoh fungsi SUBSTR:
● SUBSTR digunakan untuk mengambil bagian dari string
● Contohnya ingin mengambil 5 huruf pertama dari start_station_name pada tabel bikeshare_trips
SELECT start_station_name,
SUBSTR(start_station_name, 0, 5) as start_station_name_new
FROM bigquery-public-data.san_francisco_bikeshare.bikeshare_trips;
DATE FUNCTION
● Tanggal dan waktu dapat disimpan dalam berbagai jenis di dalam database
○ Date
○ Time
○ Datetime
○ Timestamp
○ Year
select
current_date() as date_now,
current_time() as time_now
DATE FUNCTION
Membuat tanggal dan waktu sesuai keinginan:
select
date(2021, 01, 01) as make_date,
time(15, 34, 33) as make_time;
select start_date
, date_trunc(start_date, month) as month
, date_trunc(start_date, year) as year
from bigquery-public-data.san_francisco_bikeshare.bikeshare_trips;
08
Kasus 1 : Tampilkan data products yang memiliki cost lebih dari 200$ dan ada berapa jumlahnya?
Kasus 2 : Temukan jumlah pembeli unik (berdasarkan id_user) yang menyelesaikan pesanan selama 2023
Kasus 3 : Temukan 3 kategori produk teratas yang memiliki variasi SKU terbanyak yang diinput ke sistem pada
tahun 2019
08
Kasus 1 : Tampilkan 100 data pengguna yang berada di kanada, amerika serikat, dan spanyol
Kasus 2 : Tampilkan 10 pengguna pertama (berdasarkan tanggal pendaftaran) yang memiliki reputasi lebih dari
500
Kasus 3 : Tampilkan 100 komentar pertama yang dibuat setelah 31 Desember 2020 dan memiliki skor lebih dari 5
13
Thank
you