Lỗi syntax MySql trên hackerrank

Link bài đây ạ: Top Competitors | HackerRank

With Joined as(Select s.hacker_id, s.score as _score, difficulty_level, s.challenge_id
           from Submissions s INNER JOIN Challenges ch ON s.challenge_id = ch.challenge_id),

Joined_2 as (Select j.hacker_id, COUNT(DISTINCT j.challenge_id) as cnt from Joined j 
INNER JOIN Difficulty d ON j.difficulty_level = d.difficulty_level AND _score = score group by hacker_Id)

Select h.hacker_id, name from Joined_2 j INNER JOIN Hackers h ON j.hacker_id = h.hacker_id order by cnt desc, hacker_id asc;

lỗi syntax thì sửa lại cho đúng syntax để nó chạy được đi bạn
nếu bạn không rõ syntax thì học syntax thôi, đây không còn là giải quyết vấn đề nữa, vì công cụ bạn không nắm thì làm sao mà dùng nó để giải quyết vấn đề được

4 Likes

À dạ không. Em chạy trên workbench bình thường nhưng copy lên hackerrank bị lỗi :frowning:. Đã kiểm tra tên các bảng và cột. Không hiểu sao vẫn không chạy đc.

Kinh nghiệm của mình khi “tui chắc chắn viết đúng 100% mà không hiểu tại sao nó không chạy được” là bạn nên xoá, và viết query lại từ đầu, như vậy nó sẽ nhanh hơn

2 Likes

Có thể do lỗi phiên bản, hệ thống không cho dùng CTE. Select version() trả về 5.7.27-0ubuntu0.18.04.1 ạ :v

  1. mình không dùng with as, nhưng vế with as của bạn có bảng joined_2 lại đang sử dụng lại bảng joined ở vế đâu, cái này mình không chắc có work không?
  2. câu select cuối cùng có order by hacker_id, mình cũng không chắc nó có work hay không, vì cả 2 bảng đều có cột đó, không lẽ nó không báo lỗi nhỉ?
  3. with as có vẻ như là phiên bản mới 8. có, không rõ version trên hackerrank là version nào, khuyến khích dùng các syntax cơ bản như
select ...
from tb1
join (select...) tb2 on  tb2.xxx = tb1.yyy
  1. bạn nên đi từ những câu sql đơn giản hơn (để chắc chắn câu của bạn đúng) để chạy thử, nếu vẫn là lỗi syntax thì là version không support
4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?