配信サービスの例を使用してデータベースを作成し、SQLクエリを解析します

今日は、サンプルデータベースと、MySQLを例として使用して、集計、グループ化、並べ替え、テーブルの結合などのさまざまなコマンドを見ていきます。データ自体は、任意の名前と値を持つテーブルのセットです。テーブルの構造とそれらの関係を以下に示します。





さらに理解するには、SQLとデータベースの初期知識が望ましいでしょう。このチュートリアルは、情報の構造化、メモリの更新に役立ち、必要なときに使用できるチートシートとして機能します。すべてのテーブルを作成するためのリクエストは、ここにあります





excel:





製品表
"products"
顧客テーブル
"customers"
テーブル「courier_info」
"courier_info"
注文表
"orders"
「delivery_list」テーブル
"delivery_list"
「orders_products」テーブル
"orders_products"

, , . .





: , , .





テーブル「year_statistics」
Table "year_statistics"

, ,





:





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;












その結果、多くの有用なSQLフェッチクエリを分析しました。基本的な操作とまれな操作が示されました。実際、テーブル内のデータの量が10または1000であるかどうかは関係ありません。これによってクエリが変更されることはありませんが、常に同じままになります。重要なことは、意味が明確であり、データの量が果たす役割ははるかに小さいということです。あなたがまだ希望の要求を得ることができないことを恐れて動揺することは絶対に愚かです。あなたがグーグルで興味のあるトピックに関する本を読んだ場合、それは絶対に正常です、そしてそれでも結果はありません。これには、数十分から数日かかる場合があります。私たちは皆人間であり、一人ですべてを知ることはできません。辛抱強く、フォーラムで仲間に聞いて、自分自身を探し続ければ、成功するでしょう!がんばろう。








All Articles