Knowledge Guide
HomeDatabasesSQL Practice Problems

Build the Equation

Problem

Table: Terms

+-------------+------+
| Column Name | Type |
+-------------+------+
| power       | int  |
| factor      | int  |
+-------------+------+
power is the column with unique values for this table.
Each row of this table contains information about one term of the equation.
power is an integer in the range [0, 100].
factor is an integer in the range [-100, 100] and cannot be zero.

Problem Definition

You have a very powerful program that can solve any equation of one variable in the world. The equation passed to the program must be formatted as follows:

Write a solution to build the equation.

Example

Image
Image

Output

Image
Image

Try It Yourself

java
-- TODO: Write your user queries here

Solution

To construct the equation by pivoting the Terms table according to the specified formatting rules, we can follow a systematic approach. This involves organizing the terms based on their powers, formatting each term appropriately, and then concatenating them to form the final equation.

Approach Overview

  1. Order Terms by Power Descending:

    • Sort the terms in descending order of their power to ensure the highest power appears first in the equation.
  2. Assign Row Numbers Within Each Power:

    • Assign a sequential row number to each term to handle cases where multiple terms have the same power.
  3. Format Each Term:

    • Determine the sign (+ or -) based on the factor.
    • Format the term according to the rules:
      • If power > 1, format as "<sign><abs(factor)>X^<power>".
      • If power = 1, format as "<sign><abs(factor)>X".
      • If power = 0, format as "<sign><abs(factor)>".
  4. Concatenate Formatted Terms:

    • Combine all formatted terms in the correct order and append =0 to complete the equation.

SQL Query

WITH ordered_terms AS ( SELECT power, factor, ROW_NUMBER() OVER (ORDER BY power DESC) AS rn FROM Terms ), eqn_reps AS ( SELECT power, factor, rn, CASE WHEN factor > 0 THEN '+' WHEN factor < 0 THEN '-' ELSE '' END AS sgn_rep, CASE WHEN power > 1 THEN CONCAT(ABS(factor), 'X^', power) WHEN power = 1 THEN CONCAT(ABS(factor), 'X') ELSE CONCAT(ABS(factor)) END AS power_rep FROM ordered_terms ) SELECT CONCAT( GROUP_CONCAT(CONCAT(e.sgn_rep, e.power_rep) ORDER BY e.power DESC SEPARATOR ''), '=0' ) AS equation FROM eqn_reps e;

Step-by-Step Approach

Step 1: Order Terms by Power Descending and Assign Row Numbers

Sort the terms in descending order of their power and assign a row number to each term. This ensures that higher-powered terms appear first in the equation.

SQL Query:

WITH ordered_terms AS ( SELECT power, factor, ROW_NUMBER() OVER (ORDER BY power DESC) AS rn FROM Terms ) SELECT * FROM ordered_terms;

Explanation:

Intermediate Output After Step 1 (ordered_terms):

sql +-------+--------+----+ | power | factor | rn | +-------+--------+----+ | 2 | 1 | 1 | | 1 | -4 | 2 | | 0 | 2 | 3 | +-------+--------+----+

Step 2: Format Each Term with Appropriate Sign and Structure

Determine the sign (+ or -) for each term based on the factor and format the term according to the rules specified.

SQL Query:

WITH ordered_terms AS ( SELECT power, factor, ROW_NUMBER() OVER (ORDER BY power DESC) AS rn FROM Terms ), eqn_reps AS ( SELECT power, factor, rn, CASE WHEN factor > 0 THEN '+' WHEN factor < 0 THEN '-' ELSE '' END AS sgn_rep, CASE WHEN power > 1 THEN CONCAT(ABS(factor), 'X^', power) WHEN power = 1 THEN CONCAT(ABS(factor), 'X') ELSE CONCAT(ABS(factor)) END AS power_rep FROM ordered_terms ) SELECT * FROM eqn_reps;

Explanation:

Intermediate Output After Step 2 (eqn_reps):

sql +-------+--------+----+--------+-----------+ | power | factor | rn | sgn_rep| power_rep | +-------+--------+----+--------+-----------+ | 2 | 1 | 1 | + | 1X^2 | | 1 | -4 | 2 | - | 4X | | 0 | 2 | 3 | + | 2 | +-------+--------+----+--------+-----------+

Step 3: Concatenate Formatted Terms and Append '=0'

Combine all formatted terms in the correct order and append =0 to complete the equation.

SQL Query:

WITH ordered_terms AS ( SELECT power, factor, ROW_NUMBER() OVER (ORDER BY power DESC) AS rn FROM Terms ), eqn_reps AS ( SELECT power, factor, rn, CASE WHEN factor > 0 THEN '+' WHEN factor < 0 THEN '-' ELSE '' END AS sgn_rep, CASE WHEN power > 1 THEN CONCAT(ABS(factor), 'X^', power) WHEN power = 1 THEN CONCAT(ABS(factor), 'X') ELSE CONCAT(ABS(factor)) END AS power_rep FROM ordered_terms ) SELECT CONCAT( GROUP_CONCAT(CONCAT(e.sgn_rep, e.power_rep) ORDER BY e.power DESC SEPARATOR ''), '=0' ) AS equation FROM eqn_reps e;

Explanation:

Final Output:

sql +--------------+ | equation | +--------------+ | +1X^2-4X+2=0 | +--------------+

Explanation of Output:

🤖 Don't fully get this? Learn it with Claude

Stuck on Build the Equation? Open Claude, copy a block below, and it'll teach you this exact concept — visually and interactively.

🎨 Explain it visually

Build the mental picture, not memorization.

I just read a lesson on **Build the Equation** (Databases) and want to truly understand it. Explain Build the Equation from first principles using ONE vivid real-world analogy and a visual mental model — draw it as ASCII art or a clear step-by-step diagram — with a concrete example using real numbers. Then ask me one question to check I got the mental picture, and wait for my reply. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🤔 Walk me through it (interactive)

Socratic — adapts to where you're stuck.

Teach me **Build the Equation** interactively. Ask me ONE guiding question at a time, wait for my answer, and adapt to my confusion — build the idea with me step by step instead of explaining it all at once. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧪 Quiz me & fix my gaps

Active recall exposes what you missed.

Quiz me on **Build the Equation** with 5 questions, easy to tricky, ONE at a time. Tell me if each answer is right; at the end, explain clearly what I got wrong and why. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧠 Make it stick

Intuition + hook + flashcards for long-term memory.

Help me remember **Build the Equation** for the long term: give the one-sentence intuition, a memorable hook/mnemonic, a tiny worked example, and 3 active-recall flashcards (Q -> A). If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.

📝 My notes