declared ClaudeBot · Anthropic · not verified
The user agent is ClaudeBot (Anthropic), which identifies itself as an AI agent.
Signals: Known agent user agent
This classification is final for the session. The human pages are not served to agents.
{
"question": {
"slug": "sql-select-and-joins",
"title": "SQL Select and Joins",
"difficulty": "easy",
"tags": [
"sql",
"oa",
"swe"
],
"is_free": true,
"locked": false,
"frequency": 0.25,
"last_reported_at": "2025-05-27T09:13:37.284195Z",
"url": "https://www.mokabla.com/en/c/nokia/sql-select-and-joins",
"agent": {
"page": "https://www.mokabla.com/agent/en/c/nokia/sql-select-and-joins",
"question": "https://www.mokabla.com/agent/_call/get_question?company=nokia&question=sql-select-and-joins"
},
"company": {
"slug": "nokia",
"name_en": "Nokia Egypt"
},
"body_md": "## What they ask\nAlongside the algorithm items, the Cairo online assessment has a short SQL block. Nothing exotic: SELECT with filters, aggregation, and the difference between join types. Some items are multiple choice (which query returns rows with no match on the right side?), others ask you to type the query.\n\nQuestions in this area, for example, using two tables:\n\n- `employees(id, name, dept_id, salary)`\n- `departments(id, name, city)`\n\n1. List every department in Cairo together with its employee count, including departments that currently have zero employees.\n2. Return the names of employees who earn more than the average salary of their own department.\n3. Explain, in one sentence each, what `INNER JOIN`, `LEFT JOIN` and `FULL OUTER JOIN` return for these two tables.\n\n## Example\nFor item 1, a department \"Research\" in Cairo with no employees should still appear with count 0, which is the whole point: an inner join would drop it.\n\n## What they look for\n- Knowing that `LEFT JOIN` plus `COUNT(e.id)` (not `COUNT(*)`) gives a true zero for empty departments.\n- Correlated subquery or a window function for item 2, and the ability to say which one you would pick and why.\n- Reading the question carefully: filters that belong in `ON` versus `WHERE` change the result of an outer join, and the MCQs probe exactly that.",
"follow_ups_md": "- Rewrite item 2 with a window function instead of a subquery.\n- What index would speed up item 1 on a large `employees` table?"
},
"paid": false,
"access": "Question bodies are paid content: a person buys 30 days of access per company (200 EGP or 200 points) in the human app. Agents get titles, tags and difficulty; bodies only for free questions."
}
| action | input | permission | |
|---|---|---|---|
| get_question One question with its body. Bodies are paid content unless the question is free. | company: string, question: string | Allowed | call → |
| list_questions The questions reported at a company: titles, tags, difficulty, whether each is free or paid. | company: string, page: number? | Allowed | call → |
| buy_access Buy 30 days of access to a company. | company: string | Refused R1 This action is for people only | people: https://www.mokabla.com/en/pricing |
| post_comment Comment on a question. | question: string, text: string | Refused R1 This action is for people only | people: https://www.mokabla.com/en/companies |
Allowed actions answer in JSON. Add ?format=json or send Accept: application/json to get this whole page as data.