Hari ini kita akan melihat contoh database dan berbagai perintah untuk agregasi, pengelompokan, pengurutan, penggabungan tabel, dan lainnya menggunakan MySQL sebagai contoh. Datanya sendiri adalah sekumpulan tabel dengan nama dan nilai yang berubah-ubah. Struktur tabel dan hubungannya disajikan di bawah ini.
Untuk memahami lebih jauh, Anda akan menginginkan pengetahuan awal tentang SQL dan database. Tutorial ini akan membantu Anda menyusun informasi, memperbarui memori, dan dapat bertindak sebagai lembar sontekan yang dapat Anda gunakan saat diperlukan. Permintaan untuk membuat semua tabel dapat ditemukan di sini .
excel:
, , . .
: , , .
, ,
:
SELECT SUM(amount_of_orders) AS orders_per_year FROM year_statistics;
:
SELECT month_name, amount_of_orders
FROM year_statistics
ORDER BY amount_of_orders DESC;
, :
SELECT month_name, amount_of_orders FROM year_statistics
WHERE amount_of_orders = (SELECT MAX(amount_of_orders)
FROM year_statistics);
:
SELECT district
FROM customers
GROUP BY district
ORDER BY COUNT(district) DESC;
:
SELECT courier_id, COUNT(order_id)
From delivery_list
WHERE date_arrived IS NOT NULL
GROUP BY courier_id;
IN, EXISTS, UNION .
, "South":
SELECT * FROM Customers
WHERE district IN ('South');
, :
SELECT * FROM delivery_list
WHERE taken NOT IN ('Yes');
, :
SELECT menu_name FROM products
WHERE EXISTS
(SELECT * FROM orders_products
WHERE orders_products.product_id = products.product_id);
, :
SELECT menu_name FROM products
WHERE NOT EXISTS
(SELECT * FROM orders_products
WHERE orders_products.product_id = products.product_id);
:
SELECT 'Customer' AS category, first_name, last_name, phone_number
FROM customers
UNION
SELECT 'Employee' AS category, first_name, last_name, phone_number
FROM courier_info;
INNER, NATURAL, CROSS, LEFT JOIN
, (, , ). ROUND, :
SELECT orders_products.order_id, products.menu_name, quantity,
ROUND(price*quantity, 2) AS total_price
FROM orders_products
INNER JOIN products ON orders_products.product_id = products.product_id
ORDER BY order_id, quantity;
, , :
SELECT *, SEC_TO_TIME(TIMESTAMPDIFF(second, date_get, date_arrived))
AS time_of_delivery
FROM orders
NATURAL JOIN delivery_list;
, :
SELECT DISTINCT courier_info.courier_id, customers.district
FROM courier_info
CROSS JOIN customers WHERE courier_info.delivery_type = 'car'
ORDER BY courier_id;
, :
SELECT customers.first_name, customers.last_name,
customers.phone_number, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;
Hasilnya, kami telah menganalisis banyak kueri pengambilan SQL yang berguna. Operasi dasar dan lebih jarang ditampilkan. Faktanya, tidak masalah berapa banyak data dalam tabel Anda sepuluh atau seribu, ini tidak akan mengubah kueri, tetapi akan selalu tetap sama. Yang utama adalah maknanya jelas, jumlah data memainkan peran yang jauh lebih kecil. Benar-benar bodoh untuk merasa takut dan kesal karena Anda belum bisa mendapatkan permintaan yang diinginkan. Sangat normal jika Anda google, membaca buku tentang topik yang menarik, dan masih tidak ada hasil. Ini bisa memakan waktu belasan menit hingga berhari-hari. Kita semua adalah manusia dan satu orang tidak bisa mengetahui segalanya. Bersabarlah, tanyakan pada rekan-rekan Anda, di forum dan terus cari sendiri, Anda akan berhasil! Semoga berhasil.