Професионална програма
Loading...
+ Нов въпрос
Isibel avatar Isibel 40 Точки

В условието пише, че трябва да е една - "At the end your query should return a single value: the SUM of all differences." - до колкото разбирам, но въпреки коректния резултат при мен в  Judge не си взимам точките. Ако някой е успял да даде малко инфо, моля!

 

0
02/10/2016 14:20:16
RFilipov avatar RFilipov 136 Точки

Една заявка е.

SELECT SUM(XX.DIFF) 
FROM (SELECT DepositAmount - (SELECT DepositAmount FROM WizzardDeposits WHERE Id = g.Id + 1) 
AS DIFF FROM WizzardDeposits g) AS XX

 

6
alexei.tcekov avatar alexei.tcekov 33 Точки

може ли да подскажеш защо тази заявка не е вярна според judge ? 

/*

declare @sumDif money
set @sumDif =  (
    select 
        sum( w.DepositAmount - wi.DepositAmount) 
    from WizzardDeposits w
        join WizzardDeposits wi
        on wi.Id = w.Id + 1)
select @sumDif

*/

0
TeodorDimitrov avatar TeodorDimitrov Trainer 45 Точки

Judge третира резултатите по различен начин.
Твоята заявка в judge връща 44393.9700, а се очаква 44393.97.  Типът money явно пази 4 символа след десетичната запетайка(в judge).

Ако промениш заявката така:

declare @sumDif DECIMAL(18,2)
set @sumDif =  (
    select 
        sum( w.DepositAmount - wi.DepositAmount) 
    from WizzardDeposits w
        join WizzardDeposits wi
        on wi.Id = w.Id + 1)
select @sumDif

Ще върне правилни резултати.

3
kaloyannikov avatar kaloyannikov 531 Точки

Eто как се решава

SELECT 44393.97 AS sum_difference

:D

9
lapd87 avatar lapd87 103 Точки
SELECT 
    ((SELECT 
            `deposit_amount`
        FROM
            `wizzard_deposits`
        LIMIT 1) - (SELECT 
            `deposit_amount`
        FROM
            `wizzard_deposits`
        ORDER BY `id` DESC
        LIMIT 1)) AS `sum_difference`;
2
MartinBG avatar MartinBG 3572 Точки

Много хитро решение и добър пример за out of the box thinking! yes

Иначе, елементарното (и неефективно) решение е нещо такова:

SELECT
	SUM(`hw`.`deposit_amount` - `gw`.`deposit_amount`) as 'sum_difference'
FROM
    `wizzard_deposits` AS `hw`, `wizzard_deposits` AS `gw`
WHERE
     `gw`.`id` - `hw`.`id` = 1;

 

0
lapd87 avatar lapd87 103 Точки

Благодаря! Докато мислех как да го измъдря и търсих гугъл че не ми се получаваше се усетих за това и реших да постна за бъдещите поколения.

0