{ "data": { "question": { "questionId": "4169", "questionFrontendId": "3764", "categoryTitle": "Database", "boundTopicId": 3848456, "title": "Most Common Course Pairs", "titleSlug": "most-common-course-pairs", "content": "
Table: course_completions
\n+-------------------+---------+\n| Column Name | Type | \n+-------------------+---------+\n| user_id | int |\n| course_id | int |\n| course_name | varchar |\n| completion_date | date |\n| course_rating | int |\n+-------------------+---------+\n(user_id, course_id) is the combination of columns with unique values for this table.\nEach row represents a completed course by a user with their rating (1-5 scale).\n\n\n
Write a solution to identify skill mastery pathways by analyzing course completion sequences among top-performing students:
\n\n5 courses with an average rating of 4 or higher).Course A → Course B) taken by these students.Return the result table ordered by pair frequency in descending order and then by first course name and second course name in ascending order.
\n\nThe result format is in the following example.
\n\n\n
Example:
\n\nInput:
\n\ncourse_completions table:
\n\n\n+---------+-----------+------------------+-----------------+---------------+\n| user_id | course_id | course_name | completion_date | course_rating |\n+---------+-----------+------------------+-----------------+---------------+\n| 1 | 101 | Python Basics | 2024-01-05 | 5 |\n| 1 | 102 | SQL Fundamentals | 2024-02-10 | 4 |\n| 1 | 103 | JavaScript | 2024-03-15 | 5 |\n| 1 | 104 | React Basics | 2024-04-20 | 4 |\n| 1 | 105 | Node.js | 2024-05-25 | 5 |\n| 1 | 106 | Docker | 2024-06-30 | 4 |\n| 2 | 101 | Python Basics | 2024-01-08 | 4 |\n| 2 | 104 | React Basics | 2024-02-14 | 5 |\n| 2 | 105 | Node.js | 2024-03-20 | 4 |\n| 2 | 106 | Docker | 2024-04-25 | 5 |\n| 2 | 107 | AWS Fundamentals | 2024-05-30 | 4 |\n| 3 | 101 | Python Basics | 2024-01-10 | 3 |\n| 3 | 102 | SQL Fundamentals | 2024-02-12 | 3 |\n| 3 | 103 | JavaScript | 2024-03-18 | 3 |\n| 3 | 104 | React Basics | 2024-04-22 | 2 |\n| 3 | 105 | Node.js | 2024-05-28 | 3 |\n| 4 | 101 | Python Basics | 2024-01-12 | 5 |\n| 4 | 108 | Data Science | 2024-02-16 | 5 |\n| 4 | 109 | Machine Learning | 2024-03-22 | 5 |\n+---------+-----------+------------------+-----------------+---------------+\n\n\n
Output:
\n\n\n+------------------+------------------+------------------+\n| first_course | second_course | transition_count |\n+------------------+------------------+------------------+\n| Node.js | Docker | 2 |\n| React Basics | Node.js | 2 |\n| Docker | AWS Fundamentals | 1 |\n| JavaScript | React Basics | 1 |\n| Python Basics | React Basics | 1 |\n| Python Basics | SQL Fundamentals | 1 |\n| SQL Fundamentals | JavaScript | 1 |\n+------------------+------------------+------------------+\n\n\n
Explanation:
\n\nResults are ordered by transition_count in descending order, then by first_course in ascending order, and then by second_course in ascending order.
\n表:course_completions
\n+-------------------+---------+\n| Column Name | Type | \n+-------------------+---------+\n| user_id | int |\n| course_id | int |\n| course_name | varchar |\n| completion_date | date |\n| course_rating | int |\n+-------------------+---------+\n(user_id, course_id) 是此表中具有不同值的列的组合。\n每一行代表一个用户完成的课程及其评分(1-5 分)。\n\n\n
编写一个解决方案,通过分析顶尖学生完成课程的序列来识别 课程路径:
\n\n5 门课程且平均评分 4 分或以上 的人)。课程 A → 课程 B)。返回结果表,按课程对频率 降序 排列,若频率相同则按第一课程名称和第二课程名称 升序 排列。
\n\n结果格式如下所示。
\n\n\n\n
示例:
\n\n输入:
\n\ncourse_completions 表:
\n\n\n+---------+-----------+------------------+-----------------+---------------+\n| user_id | course_id | course_name | completion_date | course_rating |\n+---------+-----------+------------------+-----------------+---------------+\n| 1 | 101 | Python Basics | 2024-01-05 | 5 |\n| 1 | 102 | SQL Fundamentals | 2024-02-10 | 4 |\n| 1 | 103 | JavaScript | 2024-03-15 | 5 |\n| 1 | 104 | React Basics | 2024-04-20 | 4 |\n| 1 | 105 | Node.js | 2024-05-25 | 5 |\n| 1 | 106 | Docker | 2024-06-30 | 4 |\n| 2 | 101 | Python Basics | 2024-01-08 | 4 |\n| 2 | 104 | React Basics | 2024-02-14 | 5 |\n| 2 | 105 | Node.js | 2024-03-20 | 4 |\n| 2 | 106 | Docker | 2024-04-25 | 5 |\n| 2 | 107 | AWS Fundamentals | 2024-05-30 | 4 |\n| 3 | 101 | Python Basics | 2024-01-10 | 3 |\n| 3 | 102 | SQL Fundamentals | 2024-02-12 | 3 |\n| 3 | 103 | JavaScript | 2024-03-18 | 3 |\n| 3 | 104 | React Basics | 2024-04-22 | 2 |\n| 3 | 105 | Node.js | 2024-05-28 | 3 |\n| 4 | 101 | Python Basics | 2024-01-12 | 5 |\n| 4 | 108 | Data Science | 2024-02-16 | 5 |\n| 4 | 109 | Machine Learning | 2024-03-22 | 5 |\n+---------+-----------+------------------+-----------------+---------------+\n\n\n
输出:
\n\n\n+------------------+------------------+------------------+\n| first_course | second_course | transition_count |\n+------------------+------------------+------------------+\n| Node.js | Docker | 2 |\n| React Basics | Node.js | 2 |\n| Docker | AWS Fundamentals | 1 |\n| JavaScript | React Basics | 1 |\n| Python Basics | React Basics | 1 |\n| Python Basics | SQL Fundamentals | 1 |\n| SQL Fundamentals | JavaScript | 1 |\n+------------------+------------------+------------------+\n\n\n
解释:
\n\n结果按 transition_count 降序排列,然后按 first_course 升序排列,再按 second_course 升序排列。
\n\\u7248\\u672c\\uff1a \\u6ce8\\u610f\\uff1a\\u56e0\\u4e3a\\u5386\\u53f2\\u539f\\u56e0\\uff0c\\u6211\\u4eec\\u6ca1\\u6709\\u542f\\u7528\\u4efb\\u4f55 SQL \\u6a21\\u5f0f\\uff0c\\u5305\\u62ec mssql server 2019.<\\/p>\"],\"oraclesql\":[\"Oracle\",\" Oracle Sql 11.2.<\\/p>\"],\"pythondata\":[\"Pandas\",\" Python 3.10 with Pandas 2.2.2 and NumPy 1.26.4<\\/p>\"],\"postgresql\":[\"PostgreSQL\",\" PostgreSQL 16<\\/p>\"]}",
"book": null,
"isSubscribed": false,
"isDailyQuestion": false,
"dailyRecordStatus": null,
"editorType": "CKEDITOR",
"ugcQuestionId": null,
"style": "LEETCODE",
"exampleTestcases": "{\"headers\":{\"course_completions\":[\"user_id\",\"course_id\",\"course_name\",\"completion_date\",\"course_rating\"]},\"rows\":{\"course_completions\":[[1,101,\"Python Basics\",\"2024-01-05\",5],[1,102,\"SQL Fundamentals\",\"2024-02-10\",4],[1,103,\"JavaScript\",\"2024-03-15\",5],[1,104,\"React Basics\",\"2024-04-20\",4],[1,105,\"Node.js\",\"2024-05-25\",5],[1,106,\"Docker\",\"2024-06-30\",4],[2,101,\"Python Basics\",\"2024-01-08\",4],[2,104,\"React Basics\",\"2024-02-14\",5],[2,105,\"Node.js\",\"2024-03-20\",4],[2,106,\"Docker\",\"2024-04-25\",5],[2,107,\"AWS Fundamentals\",\"2024-05-30\",4],[3,101,\"Python Basics\",\"2024-01-10\",3],[3,102,\"SQL Fundamentals\",\"2024-02-12\",3],[3,103,\"JavaScript\",\"2024-03-18\",3],[3,104,\"React Basics\",\"2024-04-22\",2],[3,105,\"Node.js\",\"2024-05-28\",3],[4,101,\"Python Basics\",\"2024-01-12\",5],[4,108,\"Data Science\",\"2024-02-16\",5],[4,109,\"Machine Learning\",\"2024-03-22\",5]]}}",
"__typename": "QuestionNode"
}
}
}MySQL 8.0<\\/code><\\/p>\\r\\n\\r\\nONLY_FULL_GROUP_BY<\\/code>, STRICT_TRANS_TABLES<\\/code>, NO_ZERO_IN_DATE<\\/code>, NO_ZERO_DATE<\\/code>, ERROR_FOR_DIVISION_BY_ZERO<\\/code> \\u7b49\\u3002<\\/p>\"],\"mssql\":[\"MS SQL Server\",\"