Професионална програма
Loading...
Andrian_Jambazov avatar Andrian_Jambazov 6 Точки

[HOMEWORK] Databases Basics - Basic CRUD - Problem 10. Find Names of All Employees

Колеги, по отношение на задача 10 от Basic CRUD exercises - аз ли съм тъп или има някакъв проблем в judge-a (вече видяхме, че има за 13та задача, аз вчера докладвах през системата за 17та - view-то всъщност трябва да е именувано 'V_EmployeeNameJobTitle' , а не както е по задание, надявам се да са го оправили вече)

Problem 10. Find Names of All Employees

Write a SQL query to find the full name of all employees whose salary is 25000, 14000, 12500 or 23600. Full Name is combination of first, middle and last name (separated with single space) and they should be in one column called “Full Name”.

Това е кодът, в SSMS-a си дава правилния резултат, и изобщо не виждам какъв може да е проблемът тук:

SELECT CONCAT(FirstName,' ',MiddleName,' ',LastName) AS [Full Name] FROM Employees
WHERE Salary IN (25000, 14000, 12500, 23600 )

Предварително благодаря! :)

0
Databases Basics
mishomihaylov avatar mishomihaylov 67 Точки
Best Answer

Интересен въпрос. Накара ме да го разцъкам. Отговорът е следния:

Това е моят код:

SELECT FirstName + ' ' + MiddleName + ' ' + LastName FROM Employees
WHERE Salary IN(25000, 14000, 12500, 23600)


Ако пуснеш твоя и моя код ще забележиш разликата, че на 12, 28, 30 и 68-мия резултат при мен е NULL, а при теб излиза конкатенирано първото и последното име само. Това е така, защото въпросните хора нямат MiddleName(той е NULL) и когато събираш нещо с NULL то става NULL, а при теб се конкатенират и това, че няма MiddleName не го бърка, то си събира стринговете наред, което пък в реална ситуация и имайки в предвид резултата, би и по-добре според мен.

Успех!

1
27/09/2016 15:50:50
Andrian_Jambazov avatar Andrian_Jambazov 6 Точки

Благодаря за разясненията, сам никога нямаше да се сетя за този метод за формиране на името, признавам си :)

Иначе на мен ми се струва, че задачата не е съвсем коректно зададена, още повече, че резултатът при мен си излиза и бях крайно озадачен. Подозирам, че не ми дава точките, защото брои спейсовете, а при моя метод се получават два, ако липсва презимето. :)

В момента мисля как може да се премахне един спейс, ако презимето е NULL, въртят ми се разни идеи, ама усещам, че ще падне мислене.

Още веднъж благодаря!

1
mishomihaylov avatar mishomihaylov 67 Точки

Чесно казано аз в началото, като видях твоето решение, си мислех, че моето е грешно. Но май самата задача всъщност ни е дадена за да се усетим, че когато се събере(с +) string с NULL се получава NULL. И благодарение на това, можеш да си дадеш отговор как да махнеш един спейс, ако презимето е NULL на 17.Problem. Ето кода:

 

SELECT FirstName + ISNULL(' ' + MiddleName + ' ', ' ') + LastName as [Full Name], JobTitle
FROM Employees

 

1
27/09/2016 15:57:18
Rextor92 avatar Rextor92 149 Точки

A, отлично! Пробвах се с ISNULL, с COALESCE - един и същ резултат (двойно празно място при NULL MiddleName). Пробвах и с CASE - не мога да задам име на селекцията - AS [FullName] дава грешка. Въобще не съобразих, че реално.. Null + whitespace = null . 

Благодаря!

1
daredevil avatar daredevil 7 Точки

Странно , че на мен и двата ви кода SSMS не ми изкарват нищо . Някакви идеи защо ?

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.