Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2118.html
2118. Build the Equation
Description
Table: Terms
+-------------+------+ | Column Name | Type | +-------------+------+ | power | int | | factor | int | +-------------+------+ power is the primary key column 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 thefactor
.<pow>
is the value of thepower
.
- If the power is
1
, do not add"^<pow>"
.- For example, if
power = 1
andfactor = 3
, the term will be"+3X"
.
- For example, if
- If the power is
0
, add neither"X"
nor"^<pow>"
.- For example, if
power = 0
andfactor = -3
, the term will be"-3"
.
- For example, if
- The powers in the LHS should be sorted in descending order.
Write an SQL query to build the equation.
The query 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;