Knowledge Guide
HomeDatabasesSQL Practice Problems

easy Find Popular Posts

Problem Statement

Table: Posts
Each row in this table represents a post made by a user in a social media platform. It contains the unique post ID, the user who posted it, and the number of likes received by that post.

+-------------+---------+
| Column Name | Type    | 
+-------------+---------+
| post_id     | int     | 
| user_id     | int     |
| post_likes  | int     |
+-------------+---------+

Develop a solution to find the number of likes for each post.

Return the result table ordered by post_id in ascending order.

Example

Input:

Posts table: +---------+---------+ | post_id | user_id | +---------+---------+ | 1 | 2 | | 2 | 1 | | 1 | 3 | | 3 | 1 | | 1 | 4 | | 4 | 2 | | 2 | 2 | | 4 | 3 | +---------+---------+

Output:

+---------+-------------+ | post_id | post_likes | +---------+-------------+ | 1 | 3 | | 2 | 2 | | 3 | 1 | | 4 | 2 | +---------+-------------+

Try It Yourself

java
-- TODO: Write your user queries here

Solution

To determine the number of likes each post has received, we analyze the Posts table. Each row in the Posts table represents a like made by a user (user_id) on a specific post (post_id). By aggregating this data, we can count how many users have liked each post, effectively determining the total number of likes per post.

Here are the steps for the solution.

  1. Aggregate Likes per Post:

    • Count the number of user_ids associated with each post_id to determine the total likes per post.
  2. Order the Results:

    • Present the final count of likes in ascending order of post_id for clarity and organization.

SQL Query

SELECT post_id, COUNT(user_id) AS post_likes FROM Posts GROUP BY post_id ORDER BY post_id ASC;

Step-by-Step Approach

Step 1: Select Relevant Columns

Identify the columns necessary for calculating the number of likes per post.

SQL Snippet:

SELECT post_id, COUNT(user_id) AS post_likes

Explanation:

  1. SELECT post_id,

    • *Retrieve the post_id to group likes per post.
  2. COUNT(user_id) AS post_likes

    • COUNT(user_id) counts the number of non-NULL user_id entries for each post_id.
    • AS post_likes aliases the count as post_likes for clarity in the output.

Step 2: Aggregate Data Using GROUP BY

Group the data by post_id to perform aggregation on a per-post basis.

SQL Snippet:

GROUP BY post_id

Explanation:

Intermediate Output After Step 3:

+---------+-------------+ | post_id | post_likes | +---------+-------------+ | 1 | 3 | | 2 | 2 | | 3 | 1 | | 4 | 2 | +---------+-------------+

Step 3: Order the Results

Sort the final results by post_id in ascending order for organized presentation.

SQL Snippet:

ORDER BY post_id ASC;

Explanation:

  1. ORDER BY post_id ASC;
    • ORDER BY post_id specifies the column to sort by.
    • ASC denotes ascending order (from smallest to largest).

Final Output:

+---------+-------------+ | post_id | post_likes | +---------+-------------+ | 1 | 3 | | 2 | 2 | | 3 | 1 | | 4 | 2 | +---------+-------------+
🤖 Don't fully get this? Learn it with Claude

Stuck on Find Popular Posts? Open Claude, copy a block below, and it'll teach you this exact concept — visually and interactively.

🪜 Hint ladder (no spoilers)

Progressively stronger hints — you still solve it.

I'm working on the problem **Find Popular Posts** (Databases). Give me a HINT LADDER: start with the tiniest nudge, then wait. Only reveal the next, stronger hint when I ask. Do NOT show the full solution unless I type 'show solution'. Keep me doing the thinking. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🎨 Explain the approach visually

See the technique, not just code.

Explain the optimal approach to **Find Popular Posts** with a VISUAL walkthrough: trace it on a small concrete example using ASCII art / a step-by-step diagram, narrate what changes each step, then give time & space complexity with a one-line derivation. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🔍 Review my solution

Catch bugs, edge cases, sub-optimality.

I'll paste my solution to **Find Popular Posts**. Review it for correctness, missed edge cases, and time/space complexity, then coach me toward the optimal — don't just rewrite it. Ask me to paste my code now. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🔁 Drill the pattern

Lock in recognition with look-alikes.

Give me 2 problems that use the SAME underlying pattern as **Find Popular Posts**. For each, let me attempt first, then review my answer and name the trigger signal that reveals the pattern. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.

📝 My notes