Data Aggregation упражнение - разяснения
Здравейте,
Вчера на упражнението не ни се получиха някои задачи и казах, че ще пиша във форума с малко повече информация около тях (12 и 18 задача).
12та задача
Селектирането на имената + депозитите на всички магьосници + тези на магьостниците след тях
SELECT `wd`.`first_name` AS `host_wizard`,
`wd`.`deposit_amount` AS `host_amount`,
(SELECT `first_name` FROM `wizzard_deposits` AS `wd1`
WHERE `wd1`.`id` = `wd`.`id` + 1) AS `guest_wizard`,
(SELECT `deposit_amount` FROM `wizzard_deposits` AS `wd1`
WHERE `wd1`.`id` = `wd`.`id` + 1) AS `guest_amount`
FROM `wizzard_deposits` AS `wd`
Поради ограничение от SQL не можем да използваме преименувани колоно за следваща операция в рамките на същия SELECT оператор т.е. не можем да извикаме
`host_amount` - `guest_amount` AS `difference`
Това, което можехме да направим обаче е да извикаме още веднъж големината на текущия депозит и SELECT заявката за големината на следващия депозит
`wd`.`deposit_amount` - (SELECT `deposit_amount` FROM `wizzard_deposits` AS `wd1`
WHERE `wd1`.`id` = `wd`.`id` + 1) AS `difference`
за да получим разликите. Имайки вече всички съседни магьосници + разликите в депозитие им можем да преминем към пресмятането на средната разлика. Първо ще оставим само колоната, която показва разликата в бюджетите
SELECT
`wd`.`deposit_amount` - (SELECT `deposit_amount` FROM `wizzard_deposits` AS `wd1`
WHERE `wd1`.`id` = `wd`.`id` + 1) AS `difference`
FROM `wizzard_deposits` AS `wd`;
а след това и ще намерим сумата на всички разлики, чрез SUM. Така получаваме 100/100 чрез
SELECT SUM(`wd`.`deposit_amount` - (SELECT `deposit_amount` FROM `wizzard_deposits` AS `wd1`
WHERE `wd1`.`id` = `wd`.`id` + 1)) AS `sum_difference`
FROM `wizzard_deposits` AS `wd`;
18та задача
Резултатите, които получавам от моята заявка
SELECT `first_name`, `last_name`, `department_id`
FROM `employees` AS `e`
WHERE `salary` >=
(SELECT AVG(`salary`) FROM `employees` AS `e1` WHERE `e1`.`department_id` = `e`.`department_id`)
ORDER BY `department_id`;
са абсолютно същите като това, което се получава от заявката на колежката, която е решила задачата днес, но има разминаване в подредбата на записите, което реално парви задачата ни невярна спрямо judge. Ще публикувам ъпдейт в най-кратки срокове.