[Homework] Advanced SQL


1
Някой написал ли е заявките по това домашно - цък ?

в Databases от olebg (598 точки)


Отговори



2
Ето моите, прясно завършени преди малко: [цък]

от deyan.nikolov (245 точки)


2

Много прилежно направено домашно, колега, евала :)

Не съм гледал обстойно всички заявки, но имам една забележка. 

Става дума за задача 26 от advanced sql. Твоята заявка изглежда, че работи правилно, но реално не връща правилните резултати. Давам един пример.

Ако пуснеш заявката и погледнеш в Department Production, Full Name Alejandro McGuel. Според резултата ти, нашия приятел Alejandro взима минмалната (9500) заплата за отдела си.

Само, че ако направиш един SELECT на Employees, ще видиш, че въпросния приятел взима 15000.

Грешката идва от там, че твоята заявка взима служитела c "min" име в отдела, а не с min заплата.

Прилагам моето решение на задачата :) 

ЦЪК

Не ми се занимаваше да join-вам таблиците, за да изпиша името на отдела, за това си седи само по departmentid :P


от Kalin_Kostov (360 точки)

0
Много благодаря, че си ми прегледал домашното и за feedback-a. Това ми липсва малко откакто не са задължителни домашните, понеже научих доста от забележките на колегите и от четенето на кода им.

от deyan.nikolov (245 точки)



0

Те тия задачи по-трудни от самия изпит :D Аз запекох на 22-ра, някой ако може да им хвърли едно очо дали са ок - цък!


от olebg (598 точки)


0

Здрасти колега - ето моето решение на 22-ра

ALTER TABLE Users ALTER COLUMN [LastLogin] DATETIME NULL GO INSERT INTO Users([Username], [Password], [FullName], [LastLogin]) SELECT LOWER(SUBSTRING(FirstName, 1, 1) + LastName), LOWER(SUBSTRING(FirstName, 1, 1) + LastName), FirstName + ' ' + LastName, NULL FROM Employees

от qwerty123 (157 точки)

0

На 11та на мен ми излизат 8 шефчета с по 5 служители.

Според мен, join-а тр. да е  e.ManagerID = m.EmployeeID за да добавиш към таблицата с имената на служителите, съответните имена на шефчета, пък ти си вързал шеф от едната с шеф от другата и става много вожд малко индианец :)

SELECT e.ManagerID, m.FirstName, m.LastName, COUNT(e.ManagerID) AS [Employee Count] FROM Employees e JOIN Employees m ON e.ManagerID = m.EmployeeID GROUP BY e.ManagerID, m.FirstName, m.LastName HAVING COUNT(e.ManagerID) = 5 ORDER BY e.ManagerID

На 12та може с ISNULL() функция:

SELECT e.FirstName, e.LastName, ISNULL((m.FirstName + ' ' + m.LastName), '(no manager)') AS [Manager Name] FROM Employees e LEFT JOIN Employees m ON e.ManagerID = m.EmployeeID ORDER BY e.ManagerID

На 16та липсва CREATE VIEW [V_UsersLoggedToday] AS преди SELECT statement-a, за да създадеш view.

Аз на 22ра cheat-нах и по примера на колегата взех 3 символа от първото име, защото не ми се занимаваше да правя функция които да проверява дължината на паролата и да добавя символи, ако е по-малко от 5.


от nhristova (506 точки)