Analisis data Penjualan dengan SQL

Beberapa waktu lalu saya menjumpai sebuah situs analisis data penjualan yang menarik minat saya di sebuah blog di medium . Kemudian saya ketahui bahwa sumber utama blog itu ada ada di Youtube Keith gali ini.

Dalam tulisan ini, saya menggunakan  sources yang ada di sini https://github.com/KeithGalli/Pandas-Data-Science-Tasks , untuk menggenerasi data.

Saya ingin melakukan analisis serupa, tapi hanya menggunakan SQLite via SQLiteStudio.

Iseng iseng saya menggenerate kembali dataset yang digunakan dengan pendekatan ke-Indonesiaan, yaitu dengan memodifikasi kota dan mata uang yang digunakan.

Saya menyatukan data bulanan berbentuk CSV yang dihasilkan oleh data generator yg dibuat Om Keith Galli, dan membersihkan datanya dengan Python, walaupun  untuk urusan membersihkan data, dengan SQL bisa juga, dimana kita cari kolom yang NULL lalu kita hapus.

Ok kita mulai.

Data Set

Data Set berupa data penjualan simulasi yang sudah siap pakai yang saya generasi dari skrip Pythonnya Keith Galli dengan beberapa modifikasi.

Dari data set diatas saya melakukan ekstraksi pada kolom Order_Date dan Purchase_Address agar mudah dianalisis. Saya menggunakan bantuan Library Regex pada SQLean .

SELECT  *, 
        REGEXP_CAPTURE(Purchase_Address, '^Jalan .+, (\w+?), .+', 1) || ' ' || 
        REGEXP_CAPTURE(Purchase_Address, ' (\w+) \d+$', 1) AS City, 
        REGEXP_CAPTURE(Order_Date, '^(\d{2})/', 1) AS Month,
        REGEXP_CAPTURE(Order_Date, '^\d{2}/(\d{2})', 1) AS Date,
        REGEXP_CAPTURE(Order_Date, '(\d{2}):\d{2}$', 1) AS Hour   
FROM sales

Hasilnya menjadi seperti ini

Lalu saya menyimpannya di view dengan nama sales2. Lalu view ini saya jadikan basis Query. Namun SQLiteStudio mempunyai kelemahan karena tidak bisa langsung menggenerasi Chart.

SQLite manager yang mampu menggenerate Chart adalah SqliteViz, namun Library SQLiteStudio  tidak bisa berjalan di SQLiteViz.

Kalau ingin menggenerasi chart lewat SQLiteViz, maka cara yang mudah adalah dengan menggenerate view table sales2 menjadi tabel yang sebenarnya. Bisa menggunakan Export CSV pada SQLite Studio dan langsung Load di SQLiteViz.

SQLiteViz bisa membaca dan melakukan query langsung dari CSV sekaligus bisa mengkonversi format CSV ke format SQLite dengan lebih baik daripada SQLiteStudio.

 Penjualan Bulanan

SELECT Month,
SUM(Quantity_Ordered * Price_Each) AS Sales
FROM sales2
GROUP BY Month

Menghasilkan output sebagai berikut:

Dengan grafik seperti ini

Mencari kota dengan tingkat penjualan tertinggi

SELECT  City, SUM(Quantity_Ordered * Price_Each) AS Sales FROM Sales2
GROUP BY City

Hasilnya sebagai berikut:

Dengan grafik sebagai berikut:

 

Analisis Waktu Penjualan

SELECT Hour, SUM(Quantity_Ordered * Price_Each) AS Sales  FROM sales2
Group BY Hour

Hasilnya sebagai berikut:

Dan nampak dalam grafik sbb:

Mencari produk yang terjual secara bersamaan (10 tertinggi)

Produk yang terjual secara bersamaan bisa dicari menggunakan SQL berikut

SELECT a.Product AS Product1, b.Product AS Product2, COUNT(a.Order_ID) AS Jumlah
FROM sales a
JOIN sales b ON a.Order_ID = b.Order_ID
WHERE a.Product < b.Product
GROUP BY Product1, Product2
ORDER BY Jumlah DESC

Menghasilkan hasil sebagai berikut:

Produk dengan Penjualan Tertinggi

SELECT Product, SUM(Quantity_Ordered) AS Quantity_Ordered,
CAST(AVG(Price_Each) AS INTEGER) AS Price
FROM sales2
GROUP BY Product

Menghasilkan output berikut:

Grafiknya akan seperti ini

Demikian, btw ini masih berupa output  yang belum dikasih komentar ya, nanti kalau ada waktu akan kita update 🙂