# 2118. Build the Equation

## Description

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.


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:

• The left-hand side (LHS) should contain all the terms.
• The right-hand side (RHS) should be zero.
• Each term of the LHS should follow the format "<sign><fact>X^<pow>" where:
• <sign> is either "+" or "-".
• <fact> is the absolute value of the factor.
• <pow> is the value of the power.
• If the power is 1, do not add "^<pow>".
• For example, if power = 1 and factor = 3, the term will be "+3X".
• If the power is 0, add neither "X" nor "^<pow>".
• For example, if power = 0 and factor = -3, the term will be "-3".
• The powers in the LHS should be sorted in descending order.

Write a solution to build the equation.

The result format is in the following example.

Example 1:

Input:
Terms table:
+-------+--------+
| power | factor |
+-------+--------+
| 2     | 1      |
| 1     | -4     |
| 0     | 2      |
+-------+--------+
Output:
+--------------+
| equation     |
+--------------+
| +1X^2-4X+2=0 |
+--------------+


Example 2:

Input:
Terms table:
+-------+--------+
| power | factor |
+-------+--------+
| 4     | -4     |
| 2     | 1      |
| 1     | -1     |
+-------+--------+
Output:
+-----------------+
| equation        |
+-----------------+
| -4X^4+1X^2-1X=0 |
+-----------------+


Follow up: What will be changed in your solution if the power is not a primary key but each power should be unique in the answer?

## Solutions

• # Write your MySQL query statement below
WITH
T AS (
SELECT
power,
CASE power
WHEN 0 THEN IF(factor > 0, CONCAT('+', factor), factor)
WHEN 1 THEN CONCAT(
IF(factor > 0, CONCAT('+', factor), factor),
'X'
)
ELSE CONCAT(
IF(factor > 0, CONCAT('+', factor), factor),
'X^',
power
)
END AS it
FROM Terms
)
SELECT
CONCAT(GROUP_CONCAT(it ORDER BY power DESC SEPARATOR ""), '=0') AS equation
FROM T;