0
0
Lập trình
Admin Team
Admin Teamtechmely

Khám Phá Cấp Độ Kỹ Năng SQL: Bạn Đang Ở Đâu?

Đăng vào 3 ngày trước

• 4 phút đọc

Chào mừng bạn đến với cộng đồng System Design Việt Nam! 🌟 Chúng tôi đã tạo ra một nhóm để các bạn chia sẻ và học hỏi về thiết kế hệ thống. Hãy tham gia cùng chúng tôi để xây dựng một cộng đồng thực sự lớn mạnh.

Cộng Đồng System Design Việt Nam: Tham gia ngay!

Kênh TikTok: Theo dõi chúng tôi trên TikTok!


Cùng Khám Phá SQL!

SQL (Structured Query Language) là một ngôn ngữ vô cùng mạnh mẽ để làm việc với cơ sở dữ liệu. Trong hành trình tìm hiểu về SQL, bạn đang ở cấp độ nào? Hãy cùng điểm qua các cấp độ phát triển kỹ năng SQL trong bài viết này.

Các Cấp Độ Kiến Thức SQL

Kiến thức về SQL có thể được chia thành 6 cấp độ khác nhau:

  1. Very Basic: Bao gồm các lệnh cơ bản như SELECT, FROM, WHERE.
  2. Basic: Sử dụng các lệnh GROUP BYHAVING để nhóm và chuẩn hóa dữ liệu.
  3. Beginner: Làm quen với các lệnh JOIN, như LEFT JOIN, RIGHT JOIN, OUTER JOIN, INNER JOIN, và SELF JOIN.
  4. Intermediate: Học về Subqueries (truy vấn con).

    Lưu ý rằng nhiều người thường dừng lại ở giai đoạn này. Việc nâng cấp lên giai đoạn tiếp theo sẽ giúp bạn cải thiện đáng kể khả năng viết các câu truy vấn phức tạp.

  5. Advanced: Nâng cao hơn với CTEs (Common Table Expressions), Window Functions, và lệnh PARTITION BY.
  6. Pro: Hoàn thiện với việc đọc chiến lược thực thi, hiểu cách các indexes hoạt động và cách mà cơ sở dữ liệu vận hành một cách sâu sắc.

Tại Sao Bạn Cần Học SQL?

Có ba lý do chính khiến việc học SQL trở nên quan trọng:

  • Trả lời câu hỏi kinh doanh: Kỹ năng này giúp bạn kết nối với các bộ phận khác trong doanh nghiệp, từ đó đóng góp vào chiến lược kinh doanh.
  • Thiết kế kỹ thuật dựa trên dữ liệu: Khả năng viết truy vấn không chỉ giúp đỡ trong việc tạo và hiểu sơ đồ ERD, mà còn nâng cao kiến thức về dữ liệu và mối quan hệ của chúng.
  • Tỷ lệ giữa công sức và lợi ích cao: SQL dễ học và sử dụng, có thể trở thành kỹ năng quan trọng giúp bạn giải quyết những câu hỏi phức tạp.

Một Số Câu Lệnh SQL Cơ Bản

Chúng ta sẽ sử dụng một bảng dữ liệu về các giao dịch bán hàng với năm cột cơ bản:

sql Copy
CREATE TABLE deals (
  deal_id INT PRIMARY KEY,
  deal_amount DECIMAL(10, 2),
  customer_name VARCHAR(255),
  region VARCHAR(255),
  deal_date DATE 
);

Giả sử chúng ta có 20 dòng dữ liệu như sau:

sql Copy
INSERT INTO deals 
 (deal_id, deal_amount, customer_name, region, deal_date) 
VALUES
(1, 25000.00, 'Acme Corporation', 'North America', '2023-01-15'),
(2, 25000.00, 'Globex Corporation', 'North America', '2023-01-20'), 
...
(20, 6000.00, 'Hooli', 'Europe', '2023-11-04');

Hãy bắt đầu với một số câu truy vấn đơn giản. Chúng ta sẽ tìm giao dịch lớn nhất theo từng khu vực.

Lời Giải Ngây Thơ (Naive Solution)

sql Copy
SELECT *
FROM deals d1
WHERE d1.deal_amount = (
    SELECT MAX(d2.deal_amount)
    FROM deals d2
    WHERE d2.region = d1.region
);

Phương Pháp Tối Ưu Hơn: Sử Dụng CTE

sql Copy
WITH max_deals_by_region AS (
    SELECT region, MAX(deal_amount) AS max_deal_amount
    FROM deals
    GROUP BY region
)
SELECT d.*
FROM deals d
JOIN max_deals_by_region rmd ON d.region = rmd.region AND d.deal_amount = rmd.max_deal_amount;

CTEs giúp bạn cải thiện đáng kể khả năng đọc hiểu mã SQL và tổ chức các truy vấn phức tạp một cách rõ ràng hơn.

Thử Nghiệm Về Window Functions

Hãy thử sức với câu truy vấn chọn 3 giao dịch hàng đầu trong mỗi khu vực:

sql Copy
WITH ranked_deals AS (
  SELECT deal_id, deal_amount, customer_name, region, deal_date,
    RANK() OVER (PARTITION BY region ORDER BY deal_amount DESC) AS deal_rank
  FROM deals
)
SELECT deal_id, deal_amount, customer_name, region, deal_date
FROM ranked_deals
WHERE deal_rank <= 3
ORDER BY region, deal_rank;

Bạn sẽ nhận thấy rằng kết quả có thể nhiều hơn 3 bản ghi, vì có thể có các giao dịch có cùng số tiền, dẫn đến xếp hạng chung.

Kết Luận

Việc nắm vững SQL không chỉ giúp bạn trong công việc hàng ngày mà còn cải thiện khả năng giải quyết vấn đề và khả năng phân tích dữ liệu của bạn. Hãy tiếp tục hành trình học hỏi và tham gia vào cộng đồng System Design Việt Nam để cùng nhau phát triển nhé! 🌍❤️

Chúng tôi hy vọng bài viết này sẽ hữu ích cho bạn! Hãy theo dõi chúng tôi để không bỏ lỡ những kiến thức thú vị khác về SQL và thiết kế hệ thống.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào