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 🙂