Câu hỏi phỏng vấn SQL dành cho các chuyên gia có kinh nghiệm

Nút nguồn: 1586233

Câu hỏi phỏng vấn SQL dành cho các chuyên gia có kinh nghiệm
 

Giới thiệu

 
Nếu bạn là một nhà khoa học dữ liệu có kinh nghiệm đang tìm kiếm một công việc, bạn không thể chọn được thời điểm tốt hơn. Ngay bây giờ, nhiều tổ chức được thành lập đang tìm kiếm các nhà khoa học dữ liệu, những người biết kỹ năng của họ từ trong ra ngoài. Tuy nhiên, nhu cầu cao không có nghĩa là bạn có thể, hoặc nên nhảy qua các vòng và ứng tuyển vào các vị trí cấp cao mà không có một bộ kỹ năng nhất định. Khi thuê các nhà khoa học dữ liệu có kinh nghiệm, các công ty mong đợi họ làm việc với những nhiệm vụ khó khăn nhất trong tầm tay. Những nhân viên này cần phải nắm bắt tốt ngay cả những tính năng khó hiểu nhất để có thể sử dụng chúng khi cần thiết.

Không có gì đáng ngạc nhiên khi khi phỏng vấn các vị trí cấp cao, các nhà khoa học dữ liệu có kinh nghiệm thường được hỏi những câu hỏi khó hơn nhiều. Thông thường, khi làm một công việc duy nhất trong vài năm, các nhà khoa học dữ liệu sẽ trở nên rất thành thạo trong việc thực hiện một số nhiệm vụ lặp đi lặp lại nhất định. Điều quan trọng đối với các chuyên gia là phải nhận ra rằng SQL không dừng lại ở kiến ​​thức hiện có của họ. Khi nói đến các khái niệm SQL nâng cao, có thể vẫn còn một số lỗ hổng trong kiến ​​thức của họ. Vì vậy, sẽ không có hại gì nếu bạn được trợ giúp để thành công trong cuộc phỏng vấn nhà khoa học dữ liệu. 

SQL là ngôn ngữ chính để quản lý cơ sở dữ liệu, vì vậy việc thực hiện các thao tác SQL là trọng tâm công việc của các nhà khoa học dữ liệu. Hầu hết các cuộc phỏng vấn của nhà khoa học dữ liệu đều được sắp xếp để xác định kiến ​​thức về SQL của ứng viên. 

Công việc hàng ngày có thể không bao gồm việc viết những câu truy vấn phức tạp, nhưng bạn phải chứng tỏ rằng nếu cần những kỹ năng như vậy, bạn là người có khả năng thực hiện nó. Vì vậy, không có gì ngạc nhiên khi những người phỏng vấn hỏi một loạt các Câu hỏi phỏng vấn SQL để kiểm tra độ trôi chảy của ứng viên trong SQL.

Trong bài viết này, chúng tôi muốn tóm tắt một số câu hỏi và khái niệm phức tạp được hỏi trong các cuộc phỏng vấn với các chuyên gia có kinh nghiệm. Ngay cả khi bạn tự tin vào kiến ​​thức SQL của mình, việc quét các từ khóa và đảm bảo rằng bạn đã nắm được mọi thứ sẽ không có hại gì.

Các khái niệm tối thiểu cho các chuyên gia có kinh nghiệm

TRƯỜNG HỢP / KHI NÀO

 
Hiểu cặn kẽ khái niệm CASE (và câu lệnh When đi kèm) là điều cần thiết để đạt được sự thành thạo hoàn toàn về SQL. Một câu lệnh trường hợp cho phép chúng tôi kiểm tra các điều kiện nhất định và trả về một giá trị dựa trên việc các điều kiện đó được đánh giá là đúng hay sai. Kết hợp với các mệnh đề, chẳng hạn như WHERE và ORDER BY, CASE cho phép chúng tôi đưa logic, điều kiện và thứ tự vào các truy vấn SQL của chúng tôi.

Giá trị của các câu lệnh CASE không giới hạn trong việc cung cấp một logic có điều kiện đơn giản trong các truy vấn của chúng ta. Các nhà khoa học dữ liệu có kinh nghiệm nên hiểu biết nhiều hơn mức độ bề mặt về câu lệnh CASE và cách sử dụng của nó. Người phỏng vấn có thể sẽ hỏi bạn các câu hỏi về các loại biểu thức CASE khác nhau và cách viết chúng. 

Các ứng viên có kinh nghiệm nên chuẩn bị để trả lời các câu hỏi lý thuyết, chẳng hạn như giải thích sự khác biệt giữa câu lệnh Valued và Searched CASE, cách chúng hoạt động và cách viết chúng. Điều này đòi hỏi bạn phải hiểu rõ về cú pháp và các thông lệ chung của chúng. Không cần phải nói, điều này cũng bao gồm việc sử dụng đúng mệnh đề ELSE.

Các nhà khoa học dữ liệu có kinh nghiệm cũng sẽ biết cách sử dụng CASE với các hàm tổng hợp. Bạn cũng có thể được yêu cầu viết một câu lệnh CASE viết tắt, câu lệnh này ít lặp lại và dễ hiểu hơn. Bạn sẽ có thể nói một cách thông minh về những lưu ý và rủi ro có thể xảy ra khi sử dụng câu lệnh CASE viết tắt.

Nói chung, một nhà khoa học dữ liệu có kinh nghiệm phải có khả năng sử dụng CASE để viết các truy vấn hiệu quả hơn. Rốt cuộc, toàn bộ mục đích của câu lệnh CASE là tránh viết quá nhiều truy vấn riêng lẻ để hợp nhất dữ liệu.

Dưới đây là một ví dụ về câu hỏi có thể được giải quyết bằng cách sử dụng câu lệnh CASE / WHEN: https://platform.stratascratch.com/coding/9634-host-response-rates-with-cleaning-fees?python= 

Đây là một câu hỏi khó được đặt ra trong các cuộc phỏng vấn trên Airbnb, nơi các ứng viên phải tìm tỷ lệ phản hồi trung bình của máy chủ lưu trữ, mã vùng và phí dọn dẹp tương ứng của nó.

Trong trường hợp này, câu lệnh CASE / WHEN được sử dụng để định dạng kết quả dưới dạng số và trình bày dưới dạng giá trị phần trăm, ngoài mã ZIP.

SQL tham gia

 
Thật dễ dàng để cảm thấy tự tin vào kiến ​​thức của bạn về SQL Joins, nhưng càng khám phá chủ đề này, bạn sẽ càng khám phá ra rằng bạn chưa biết. Người phỏng vấn thường hỏi câu hỏi phỏng vấn về các khía cạnh nâng cao của SQL Joins mà thường bị bỏ qua. Vì vậy, điều quan trọng là phải nghiên cứu kỹ khái niệm này và nắm vững nó một cách thấu đáo.
 
Bên cạnh các khái niệm cơ bản, người phỏng vấn có thể hỏi tự kết hợp chéo là gì và tìm hiểu kiến ​​thức chuyên sâu của bạn bằng cách yêu cầu giải quyết các câu hỏi thực tế. Bạn nên biết tất cả các kiểu nối khác nhau, bao gồm cả những kiểu phức tạp hơn, chẳng hạn như phép nối băm hoặc phép nối hỗn hợp. Bạn cũng có thể được yêu cầu giải thích các phép nối tự nhiên là gì và khi nào chúng hữu ích nhất. Đôi khi bạn sẽ phải giải thích sự khác biệt giữa liên kết tự nhiên và liên kết bên trong.
 
Nhìn chung, bạn nên có kinh nghiệm kỹ lưỡng và thành thạo việc sử dụng các phép nối kết hợp với các câu lệnh khác để đạt được kết quả mong muốn. Ví dụ, bạn nên biết cách sử dụng mệnh đề WHERE để sử dụng Kết nối chéo như thể nó là Tham gia bên trong. Bạn cũng sẽ biết cách sử dụng các phép nối để tạo ra các bảng mới mà không gây quá nhiều áp lực cho máy chủ. Hoặc cách sử dụng các phép nối ngoài để xác định và điền vào các giá trị còn thiếu khi truy vấn cơ sở dữ liệu. Hoặc hoạt động bên trong của các phép nối bên ngoài, chẳng hạn như việc sắp xếp lại thứ tự của chúng có thể thay đổi kết quả đầu ra. 

Đây là một ví dụ về câu hỏi liên quan đến việc viết một tuyên bố chung nội bộ

Đây là một câu hỏi khá khó, trong đó các ứng viên được yêu cầu hiển thị quy mô đơn hàng dưới dạng phần trăm tổng chi tiêu.
 
 

Khái niệm nâng cao N1: Thao tác ngày giờ

 
Câu hỏi phỏng vấn SQL dành cho các chuyên gia có kinh nghiệm
 

Thông thường cơ sở dữ liệu bao gồm ngày và giờ, vì vậy bất kỳ nhà khoa học dữ liệu có kinh nghiệm nào cũng phải có kiến ​​thức sâu về cách làm việc với chúng. Loại dữ liệu này cho phép chúng tôi theo dõi thứ tự các sự kiện xảy ra, các thay đổi về tần suất, tính toán khoảng thời gian và có được những thông tin chi tiết quan trọng khác. Rất nhiều lần việc thực hiện các thao tác này đòi hỏi bạn phải thành thạo hoàn toàn thao tác ngày-giờ trong SQL. Vì vậy, các chuyên gia với một bộ kỹ năng như vậy sẽ có lợi thế hơn các ứng viên cạnh tranh. Nếu bạn không tự tin 100% vào kỹ năng của mình, hãy xem qua các khái niệm được mô tả bên dưới và xem có bao nhiêu trong số chúng nghe quen thuộc.

Vì có nhiều cách tiếp cận khác nhau (nhưng hợp lệ) để định dạng dữ liệu trong SQL, các lập trình viên giỏi ít nhất nên quen thuộc với tất cả chúng. Trong các cuộc phỏng vấn, người quản lý tuyển dụng mong đợi kiến ​​thức về các khái niệm định dạng dữ liệu cơ bản và khả năng nói chuyện thông minh về việc lựa chọn chức năng phù hợp cho nhiệm vụ. Điều này bao gồm kiến ​​thức về một hàm FORMAT () quan trọng và cú pháp liên quan để sử dụng đầy đủ hàm. Kiến thức về các hàm cơ bản khác, chẳng hạn như NOW () cũng được mong đợi. Ngoài ra, các chuyên gia có kinh nghiệm sẽ không được hỏi về các khái niệm cơ bản như dữ liệu chuỗi thời gian và mục đích của nó.

Việc xem xét bối cảnh của công việc bạn đang ứng tuyển cũng rất quan trọng. Một công ty AI hoặc IoT sẽ quan tâm hơn đến việc theo dõi dữ liệu được thu thập từ các cảm biến, trong khi ứng dụng giao dịch chứng khoán có thể yêu cầu bạn theo dõi biến động giá trong ngày, tuần hoặc tháng.

Trong một số trường hợp, nhà tuyển dụng có thể hỏi về các hàm ngày / giờ nâng cao hơn trong SQL, chẳng hạn như CAST (), EXTRACT () hoặc DATE_TRUNC (). Những chức năng này có thể vô giá khi bạn đang làm việc với một khối lượng lớn dữ liệu có chứa ngày tháng. Một nhà khoa học dữ liệu có kinh nghiệm nên biết mục đích của từng chức năng và các ứng dụng của nó. Trong một kịch bản lý tưởng, người đó nên có kinh nghiệm sử dụng chúng trong quá khứ.

Thao tác ngày-giờ phức tạp nhất trong SQL sẽ liên quan đến sự kết hợp của các hàm cơ bản và nâng cao. Vì vậy, cần phải biết tất cả chúng, bắt đầu từ FORMAT (), NOW (), CURRENT_DATE và CURRENT_TIME cơ bản hơn, và bao gồm các hàm nâng cao hơn được đề cập ở trên. Là một nhà khoa học dữ liệu có kinh nghiệm, bạn cũng nên biết INTERVAL làm gì và sử dụng nó khi nào.

Đây là một ví dụ về một câu hỏi được hỏi trong các cuộc phỏng vấn trên Airbnb, nơi các ứng viên phải sử dụng dữ liệu có sẵn để theo dõi sự phát triển của Airbnb.
 
 

Tiền đề:

 
Trong câu hỏi này, các ứng viên được yêu cầu theo dõi sự phát triển của Airbnb dựa trên những thay đổi về số lượng máy chủ đăng ký mỗi năm. Nói cách khác, chúng tôi sẽ sử dụng số lượng máy chủ đăng ký mới làm chỉ số tăng trưởng cho mỗi năm. Chúng tôi sẽ tìm tỷ lệ tăng trưởng bằng cách tính toán sự khác biệt về số lượng máy chủ lưu trữ giữa năm trước và năm hiện tại và chia con số đó cho số lượng máy chủ đã đăng ký trong năm trước. Sau đó, chúng tôi sẽ tìm giá trị phần trăm bằng cách nhân kết quả với 100.

Bảng đầu ra phải có các cột và dữ liệu tương ứng cho số lượng máy chủ trong năm hiện tại, trong năm trước và phần trăm tăng trưởng từ năm này sang năm khác. Tỷ lệ phần trăm phải được làm tròn đến số nguyên gần nhất và các hàng phải được sắp xếp theo thứ tự tăng dần tùy theo năm.
 
 

Giải pháp:

 
Để trả lời câu hỏi này, ứng viên phải làm việc với bảng có tên 'airbnb_search_details', bao gồm nhiều cột. Cột mà chúng ta cần có nhãn 'host_since', biểu thị năm, tháng và ngày mà máy chủ đăng ký trang web lần đầu tiên. Đối với bài tập này, tháng và ngày không liên quan, vì vậy điều đầu tiên chúng ta cần làm là trích xuất năm từ giá trị. Sau đó, chúng ta sẽ phải tạo một chế độ xem bao gồm các cột riêng biệt cho năm hiện tại, năm trước và tổng số máy chủ lưu trữ trong năm đó. 

Chọn trích xuất(năm TỪ host_since::DATE) TỪ airbnb_search_details Ở ĐÂU host_since KHÔNG PHẢI LÀ NULL

Cho đến nay, chúng tôi đã làm được hai việc:

  1. Chúng tôi đã đảm bảo chỉ bao gồm các hàng mà cột host_since không trống.
  2. Chúng tôi đã trích xuất năm từ dữ liệu và lấy nó làm giá trị DATE.
Chọn trích xuất(năm TỪ host_since::DATE) đếm(id) là current_year_host TỪ airbnb_search_details Ở ĐÂU host_since KHÔNG NULL NHÓM THEO trích xuất(năm TỪ host_since::DATE) ĐẶT HÀNG THEO năm asc

Sau đó, chúng tôi tiến hành đếm id và thiết lập mệnh đề GROUP BY cho mỗi năm. Và làm cho nó hiển thị theo thứ tự tăng dần. 

Điều này sẽ cung cấp cho chúng ta một bảng có hai cột: năm và số lượng máy chủ đã đăng ký trong năm đó. Chúng tôi vẫn chưa có bức tranh đầy đủ cần thiết để giải quyết câu hỏi, nhưng đó là một bước đi đúng hướng. Chúng tôi cũng cần các cột riêng biệt cho các máy chủ đã đăng ký trong năm trước. Đây là lúc hàm LAG() phát huy tác dụng.

CHỌN Năm, current_year_host, LAG(current_year_host, 1) QUÁ (ĐẶT HÀNG THEO năm) làm prev_year_host Chọn trích xuất (năm TỪ host_since::DATE) đếm (id) làm current_year_host TỪ airbnb_search_details WHERE host_since KHÔNG NULL GROUP BY trích xuất (năm TỪ host_since: :DATE) ĐẶT HÀNG THEO NĂM asc

Ở đây, chúng tôi đã thêm cột thứ ba, cột này sẽ được gắn nhãn 'prev_year_host' và các giá trị của nó sẽ đến từ 'current_year_host', ngoại trừ độ trễ của một hàng. Đây là những gì có thể trông như thế này:

Câu hỏi phỏng vấn SQL dành cho các chuyên gia có kinh nghiệm
 

Sắp xếp bảng theo cách này rất thuận tiện để tính toán tốc độ tăng trưởng cuối cùng. Chúng tôi có một cột riêng biệt cho mọi giá trị trong phương trình. Cuối cùng, mã của chúng ta sẽ trông giống như sau:

CHỌN năm, current_year_host, prev_year_host, round(((current_year_host - prev_year_host)/(cast(prev_year_host AS số)))*100) ước tính_tăng trưởng TỪ (SELECT year, current_year_host, LAG(current_year_host, 1) QUÁ (ĐẶT HÀNG THEO năm) AS prev_year_host TỪ (CHỌN trích xuất(năm TỪ host_since::date) NHƯ năm, đếm(id) current_year_host TỪ airbnb_search_details WHERE host_since NOT NULL GROUP THEO trích xuất(năm TỪ host_since::date) ĐẶT HÀNG THEO năm) t1) t2

Ở đây, chúng tôi thêm một truy vấn khác và một cột khác, nơi chúng tôi tính toán tốc độ tăng trưởng. Chúng ta phải nhân kết quả ban đầu với 100 và làm tròn nó để thỏa mãn yêu cầu của nhiệm vụ. 

Đó là giải pháp cho nhiệm vụ này. Rõ ràng là các chức năng thao tác ngày-giờ là điều cần thiết để hoàn thành nhiệm vụ. 
 
 

Khái niệm nâng cao N2: Chức năng và phân vùng cửa sổ

 
Câu hỏi phỏng vấn SQL dành cho các chuyên gia có kinh nghiệm
 

Các chức năng của cửa sổ SQL là một trong những khái niệm quan trọng nhất để viết các truy vấn SQL phức tạp nhưng hiệu quả. Các chuyên gia có kinh nghiệm được kỳ vọng sẽ có kiến ​​thức lý thuyết và thực tế sâu về các chức năng của cửa sổ. Điều này bao gồm việc biết mệnh đề over là gì và nắm vững cách sử dụng của nó. Người phỏng vấn có thể hỏi làm cách nào mệnh đề OVER có thể biến các hàm tổng hợp thành các hàm cửa sổ. Bạn cũng có thể được hỏi về ba hàm tổng hợp có thể được sử dụng như các hàm cửa sổ. Các nhà khoa học dữ liệu có kinh nghiệm cũng nên biết về các chức năng cửa sổ không tổng hợp khác.

Để sử dụng tốt nhất các chức năng cửa sổ, người ta cũng phải biết mệnh đề PARTITION BY là gì và cách sử dụng nó. Bạn có thể được yêu cầu giải thích nó và cung cấp ví dụ về một số trường hợp sử dụng. Đôi khi bạn sẽ phải tổ chức các hàng trong các phân vùng bằng mệnh đề ORDER_BY.

Những ứng viên có thể thể hiện kiến ​​thức thấu đáo về từng chức năng cửa sổ riêng lẻ, chẳng hạn như ROW_NUMBER() sẽ có lợi thế. Không cần phải nói, kiến ​​thức lý thuyết thôi là chưa đủ – các chuyên gia cũng cần có kinh nghiệm sử dụng chúng trong thực tế, có hoặc không có phân vùng. Ví dụ: một chuyên gia có kinh nghiệm sẽ có thể giải thích sự khác biệt giữa RANK() và DENSE_RANK(). Một ứng viên lý tưởng phải biết một số khái niệm nâng cao nhất, chẳng hạn như các khung trong phân vùng và có thể giải thích chúng một cách rõ ràng.

Các ứng cử viên tuyệt vời cũng nên giải thích việc sử dụng hàm NTH_VALUE (). Sẽ không có hại gì khi đề cập đến các lựa chọn thay thế cho hàm này, chẳng hạn như các hàm FIRST_VALUE () và LAST_VALUE (). Các công ty thường thích đo các phần tư, lượng tử và phần trăm nói chung. Để thực hiện thao tác này, các nhà khoa học dữ liệu cũng phải biết cách sử dụng hàm cửa sổ NTILE ().

Trong SQL, thường có nhiều cách để tiếp cận một tác vụ. Tuy nhiên, các hàm cửa sổ cung cấp cách dễ nhất để thực hiện các thao tác phổ biến nhưng phức tạp. Một ví dụ điển hình về hàm cửa sổ như vậy là LAG () hoặc LEAD (), vì vậy bạn cũng nên làm quen với chúng. Ví dụ: hãy xem một ví dụ từ giải pháp trước cho một câu hỏi phỏng vấn Airbnb khó:

Để hiển thị số lượng máy chủ trong năm trước, chúng tôi sử dụng hàm LAG () với câu lệnh OVER. Điều này có thể được thực hiện theo nhiều cách khác, nhưng các hàm cửa sổ cho phép chúng tôi nhận được kết quả mong muốn chỉ trong một dòng mã SQL:

LAG (current_year_host, 1) OVER (ORDER THEO năm) dưới dạng pres_year_host

Rất nhiều công ty cần tính toán tốc độ tăng trưởng trong một khoảng thời gian nhất định. Hàm LAG () có thể là vô giá để hoàn thành các nhiệm vụ như vậy.
 
 

Khái niệm nâng cao N3: Tăng trưởng hàng tháng

 
Câu hỏi phỏng vấn SQL dành cho các chuyên gia có kinh nghiệm
 

Nhiều tổ chức sử dụng phân tích dữ liệu để đo lường hiệu suất của chính họ. Điều này có thể đòi hỏi phải đo lường hiệu quả của các chiến dịch tiếp thị hoặc ROI trên một khoản đầu tư cụ thể. Thực hiện phân tích như vậy đòi hỏi kiến ​​thức chuyên sâu về SQL, chẳng hạn như các hàm ngày, giờ và cửa sổ.

Các nhà khoa học dữ liệu cũng sẽ phải chứng minh kỹ năng của họ trong việc định dạng dữ liệu và hiển thị nó dưới dạng phần trăm hoặc dưới bất kỳ hình thức nào khác. Nói chung, để giải quyết các câu hỏi thực tế, nơi bạn phải tính toán mức tăng trưởng qua từng tháng, bạn phải sử dụng kết hợp nhiều bộ kỹ năng. Một số khái niệm bắt buộc sẽ là nâng cao (hàm cửa sổ, thao tác ngày-giờ), trong khi những khái niệm khác sẽ là cơ bản (hàm tổng hợp và các câu lệnh SQL phổ biến).

Hãy xem xét một câu hỏi ví dụ do Người phỏng vấn tại Amazon hỏi.

Tiền đề:

 
Trong câu hỏi này, chúng ta phải làm việc với một bảng mua hàng và tính toán sự tăng trưởng hoặc giảm sút hàng tháng trong doanh thu. Kết quả cuối cùng phải được định dạng theo một cách cụ thể (định dạng YYYY-MM) và phần trăm phải được làm tròn đến số thập phân gần nhất thứ hai. 

Giải pháp:

 
Khi thực hiện một nhiệm vụ như thế này, điều đầu tiên bạn cần làm là hiểu bảng. Bạn cũng nên xác định các cột bạn cần làm việc để trả lời câu hỏi. Và kết quả đầu ra của bạn sẽ như thế nào.

Trong ví dụ của chúng tôi, các giá trị dữ liệu có kiểu đối tượng, vì vậy chúng ta sẽ phải sử dụng hàm CAST () để chuyển đổi chúng thành kiểu ngày tháng.

CHỌN to_char(cast(created_at as date), 'YYYY-MM') TỪ sf_transactions

Câu hỏi cũng chỉ định một định dạng cho ngày tháng, vì vậy chúng ta có thể sử dụng hàmTO_CHAR () trong SQL để xuất ra ngày tháng ở định dạng này.

Để tính toán mức tăng trưởng, chúng ta cũng nên chọn hàm tổng hợp create_at và SUM () để lấy khối lượng tổng doanh số bán hàng cho ngày đó. 

CHỌN to_char(cast(created_at as date), 'YYYY-MM'), created_at, sum(value) TỪ sf_transactions

Lúc này, chúng ta phải sử dụng lại các chức năng của cửa sổ. Cụ thể, chúng tôi sẽ sử dụng hàm LAG () để truy cập khối lượng của tháng trước và hiển thị nó dưới dạng một cột riêng biệt. Đối với điều đó, chúng tôi cũng sẽ cần một điều khoản OVER.

CHỌN to_char(cast(created_at as date), 'YYYY-MM') AS year_month, created_at, sum(value) lag(sum(value), 1) QUÁ (ĐẶT HÀNG THEO created_at::date) TỪ sf_transactions NHÓM BY created_at

Dựa trên mã chúng tôi đã viết cho đến nay, bảng của chúng tôi sẽ trông giống như sau:

Câu hỏi phỏng vấn SQL dành cho các chuyên gia có kinh nghiệm
 

Ở đây, chúng ta có ngày và tổng giá trị tương ứng trong cột tổng và giá trị của ngày cuối cùng trong cột trễ. Bây giờ chúng ta có thể cắm các giá trị vào công thức và hiển thị tỷ lệ tăng trưởng trong một cột riêng biệt.

Chúng ta cũng nên loại bỏ cột create_at không cần thiết và thay đổi mệnh đề GROUP BY và ORDER BY thành year_month.

CHỌN to_char(cast(created_at as date), 'YYYY-MM') AS year_month, sum(value), lag(sum(value), 1) QUÁ (ĐẶT HÀNG THEO to_char(cast(created_at as date)) TỪ NHÓM sf_transactions THEO năm tháng

Khi chúng tôi chạy mã, bảng của chúng tôi chỉ nên bao gồm các cột cần thiết cho việc tính toán của chúng tôi.

Câu hỏi phỏng vấn SQL dành cho các chuyên gia có kinh nghiệm
 

Bây giờ cuối cùng chúng ta có thể đi đến giải pháp. Đây là mã cuối cùng sẽ trông như thế nào:

CHỌN to_char(created_at::date, 'YYYY-MM') AS year_month, round(((sum(value) - lag(sum(value), 1) QUÁ w) / (lag(sum(giá trị), 1) QUÁ w)) * 100, 2) NHƯ doanh thu_diff_pct TỪ sf_transactions NHÓM THEO năm_tháng CỬA SỔ w AS ( ĐẶT HÀNG THEO to_char(created_at::date, 'YYYY-MM')) ĐẶT HÀNG THEO năm_tháng ASC


 

Trong đoạn mã này, chúng tôi lấy hai giá trị cột từ ví dụ trước và tính toán sự khác biệt giữa chúng. Lưu ý rằng chúng tôi cũng sử dụng bí danh cửa sổ để giảm độ lặp lại của mã của chúng tôi.

Sau đó, theo thuật toán, chúng tôi chia nó cho doanh thu của tháng hiện tại và nhân nó với 100 để có giá trị phần trăm. Cuối cùng, chúng tôi làm tròn giá trị phần trăm đến hai chữ số thập phân. Chúng tôi đi đến câu trả lời đáp ứng tất cả các yêu cầu của nhiệm vụ. 

Khái niệm nâng cao N4: Tỷ lệ churn

 
Mặc dù nó trái ngược với tăng trưởng nhưng tỷ lệ rời bỏ cũng là một thước đo quan trọng. Nhiều công ty theo dõi tỷ lệ rời bỏ của họ, đặc biệt nếu mô hình kinh doanh của họ dựa trên đăng ký. Bằng cách này, họ có thể theo dõi số lượng đăng ký hoặc tài khoản bị mất và dự đoán nguyên nhân gây ra sự cố đó. Một nhà khoa học dữ liệu có kinh nghiệm sẽ phải biết nên sử dụng hàm, câu lệnh và mệnh đề nào để tính tỷ lệ rời bỏ.

Dữ liệu đăng ký rất riêng tư và chứa thông tin người dùng riêng tư. Điều quan trọng là các nhà khoa học dữ liệu phải biết cách làm việc với những dữ liệu đó mà không bị lộ ra ngoài. Thường thì việc tính toán tỷ lệ churn liên quan đến các biểu thức bảng thông thường, đây là một khái niệm tương đối mới. Các nhà khoa học dữ liệu tốt nhất nên biết tại sao CTE lại hữu ích và khi nào sử dụng chúng. Khi làm việc với cơ sở dữ liệu cũ, nơi không có CTE, một ứng viên lý tưởng vẫn có thể hoàn thành công việc.

Đây là một ví dụ về một nhiệm vụ khó khăn. Các ứng viên phỏng vấn tại Lyft nhận nhiệm vụ này để tính toán tỷ lệ nghỉ việc của các tài xế tại công ty.

Để giải quyết vấn đề này, các nhà khoa học dữ liệu phải sử dụng các câu lệnh case / when, các hàm cửa sổ như LAG (), cũng như FROM / WHERE và các mệnh đề cơ bản khác. 

Kết luận

 
Làm việc như một nhà khoa học dữ liệu trong nhiều năm chắc chắn CV trông rất ấn tượng và bạn sẽ nhận được nhiều cuộc phỏng vấn. Tuy nhiên, một khi bạn đã đặt chân vào cửa, bạn vẫn cần thể hiện kiến ​​thức để bổ sung cho nhiều năm kinh nghiệm. Ngay cả khi bạn có nhiều kinh nghiệm trong viết truy vấn trong SQL, không có hại gì khi sử dụng các tài nguyên như StrataScratch để làm mới kiến ​​thức của bạn.

 
 
Nate Rosidi là một nhà khoa học dữ liệu và trong chiến lược sản phẩm. Anh ấy cũng là một giáo sư trợ giảng dạy phân tích và là người sáng lập StrataScratch, một nền tảng giúp các nhà khoa học dữ liệu chuẩn bị cho cuộc phỏng vấn của họ với các câu hỏi phỏng vấn thực tế từ các công ty hàng đầu. Kết nối với anh ấy trên Twitter: StrataScratch or LinkedIn.

Nguồn: https://www.kdnuggets.com/2022/01/sql-interview-questions-experirical-professionals.html

Dấu thời gian:

Thêm từ Xe đẩy