Софтуерно Инженерство
Loading...
+ Нов въпрос
abetterman avatar abetterman 20 Точки

Exercises: Functions, Triggers and Transactions - задача 9. People with Balance Higher Than

Моля помогнете да си намеря грешката :

DELIMITER $$
CREATE PROCEDURE usp_get_holders_with_balance_higher_than(money_number INT(11))
BEGIN
SELECT first_name,last_name
FROM account_holders ah
JOIN accounts a
ON a.account_holder_id=ah.id
GROUP BY first_name
HAVING SUM(a.balance) > money_number
ORDER BY first_name,last_name,ah.id;
END $$

0
Databases Basics - MySQL
D.Dimov_96 avatar D.Dimov_96 72 Точки
Best Answer

Здравей abetterman,

В задачите са поставени моменти, за които да внимаваме.

При тази задача, изречението на което да обърним внимание е "The result should be sorted by first_name then by last_name alphabetically and account id ascending".

Посочено е да използваме таблицата accounts, защото е написано "account id". 

В базата от данни bank, има две таблици accounts и account_holders. Всяка от които има колона id.

Нужно е да изпозваш accounts.id или a.id при сортирането.

Също така заплатите са DOUBLE, а ти си използвал INT(11).

Още ено нещо, в тази задача първо се сортира по accounts.id после по first_name и накрая по last_name.

В твоя случай, кода ти ще бъде:

CREATE PROCEDURE usp_get_holders_with_balance_higher_than(money_number DOUBLE)
BEGIN
SELECT first_name,last_name
FROM account_holders ah
JOIN accounts a
ON a.account_holder_id=ah.id
GROUP BY first_name
HAVING SUM(a.balance) > money_number
ORDER BY a.id,first_name,last_name;
END 

Така написания код минава на 100/100 в judge.softuni.bg

Можеш да видиш моето решение: 

https://github.com/DimovDimo/Software-University-SoftUni/blob/master/Java-DB-September-2018/Database-Basics-MySQL-September-2018/16%2CDatabase%20Programmability%20-%20Exercise/Work/PART%20II%20%E2%80%93%20Queries%20for%20Bank%20Database/09.%20People%20with%20Balance%20Higher%20Than.sql

С уважение,

Димо Димов

студент в softuni.bg

0
abetterman avatar abetterman 20 Точки

Благодаря ти, колега. Не само правилно решение, но съм и впечатлен от изчерпателния начин на изразяване. Ако можех да гласувам бих го направил положително, но нямам 15 точки. Благодаря ти много.

0
Sandanski avatar Sandanski 4 Точки

Здрасти,

Аз също имах проблем със сортирането. В условието се казва, че трябва да сортираме по име, фамилия и накрая по id, но така за Judge дава грешен резултат . Опитай с ORDER BY accounts.id

0
abetterman avatar abetterman 20 Точки

Не и така не става. И според мен има нещо объркано в условието на тази задача и това я прави много по-трудна от тези със звездичките. Защото трябва да наулучкваш какво judje иска, което в условието не е написано. Но как би го направил, ако това е тест4 или тест5 примерно, в които не виждаш какво се подава като данни?

0