Codewars Kata SQL

## Simple Fun #74: Growing Plant

# Task

Each day a plant is growing by `upSpeed`

meters. Each night that plant's height decreases by `downSpeed`

meters due to the lack of sun heat. Initially, plant is 0 meters tall. We plant the seed at the beginning of a day. We want to know when the height of the plant will reach a certain level.

# Example

For `upSpeed = 100, downSpeed = 10 and desiredHeight = 910`

, the output should be `10`

.

`After day 1 --> 100`

After night 1 --> 90

After day 2 --> 190

After night 2 --> 180

After day 3 --> 280

After night 3 --> 270

After day 4 --> 370

After night 4 --> 360

After day 5 --> 460

After night 5 --> 450

After day 6 --> 550

After night 6 --> 540

After day 7 --> 640

After night 7 --> 630

After day 8 --> 730

After night 8 --> 720

After day 9 --> 820

After night 9 --> 810

After day 10 --> 910

For `upSpeed = 10, downSpeed = 9 and desiredHeight = 4`

, the output should be `1`

.

Because the plant reach to the desired height at day 1(10 meters).

`After day 1 --> 10`

# Input/Output

# Input

`-----------------------------------------`

| Table | Column | Type |

|---------------+----------------+------|

| growing_plant | down_speed | int |

| | up_speed | int |

| | desired_height | int |

-----------------------------------------

# Columns

`up_speed`

: A positive integer representing the daily growth. Constraints:`5 ≤ up_speed ≤ 100.`

`down_speed`

: A positive integer representing the nightly decline. Constraints:`2 ≤ down_speed < up_speed.`

`desired_height`

: A positive integer representing the threshold. Constraints:`4 ≤ desired_height ≤ 1000.`

# Output

`-------------------`

| Column | Type |

|----------+------|

| id | int |

| num_days | int |

-------------------

`num_days`

is the number of days that it will take for the plant to reach/pass desiredHeight (including the last day in the total count).

Solution:

`SELECT id, `

CASE WHEN desired_height <= up_speed THEN 1

ELSE CEIL((desired_height - up_speed)::decimal / (up_speed - down_speed))::int + 1 END AS num_days

FROM growing_plant;