Loading...
kosio197 avatar kosio197 104 Точки

Problem 23 - User in Games with Their Statistics from Functions Triggers And Transactions

Привет,

Опитах ръчно да проверя отговорите, но не успявам да стигна примерно до 258 за streight  за  това от примерния изход:

skippingside

Rose Fire & Ice

Sorceress

258

 

skippingside има 2 characters за тази игра - Sorceress и Druid, според условието трябва да събера бонуса от играта + бонуса от character-a + сумата от бонусите на всички items. Тоест от това което разбирам трябва да има два записа за skippingside и Rose Fire & Ice в изхода, един за Druid и един за Sorceress

Бонуси:

за играта - 10 , за Characters: Druid - 17  Sorceress - 11, за items -  Druid - 68, Sorceress-163 (Това са бонусите за streight). Та от тези цифри трябва да се получи 258, но не виждам как.

Та може ли някой да постне решение, тъй като не мога да разбера съвсем условието.

Благодаря!

Поздрави, Косьо

 

Тагове:
2
Databases Basics - MySQL
stambi4a avatar stambi4a 126 Точки

Колега, това върви:

select 
	u.user_name, 
	g.name as game, 
	MAX(c.name) as ch,
	SUM(its.strength) + MAX(gts.strength) + MAX(cs.strength) as strength,
	SUM(its.defence) + MAX(gts.defence) + MAX(cs.defence) as defence,
	SUM(its.speed) + MAX(gts.speed) + MAX(cs.speed) as speed,
	SUM(its.mind) + MAX(gts.mind) + MAX(cs.mind) as mind,
	SUM(its.luck) + MAX(gts.luck) + MAX(cs.luck) as luck
from users u
join users_games ug on ug.user_id = u.id
join games g on ug.game_id = g.id
join game_types gt on gt.id = g.game_type_id
join statistics gts on gts.id = gt.bonus_stats_id
join characters c on ug.character_id = c.id
join statistics cs on cs.id = c.statistics_id
join user_game_items ugi on ugi.user_game_id = ug.id
join items i on i.id = ugi.item_id
join statistics its on its.id = i.statistics_id
group by u.user_name, g.name
order by strength desc, defence desc, speed desc, mind desc, luck desc

 

2
kosio197 avatar kosio197 104 Точки

Голямо благодаря

Дифа между твоята и моята заявка е само MAX()

аз голямо чудене му хвърлих ..........................

1
stambi4a avatar stambi4a 126 Точки

Аз се чудих много повече време на условието, а и не съм единствен. Линк

0
11/10/2016 21:07:21
AntonPortenov avatar AntonPortenov 102 Точки

Здравейте,

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

Каква е логиката на

MAX(c.name) as ch,

в това решение?

Също така защо

SUM(its.strength) + MAX(gts.strength) + MAX(cs.strength) as strength,

сумираш дадена статистика с MAX статистика? Къде е връзката?

 

Благодаря

1
13/10/2016 23:48:05
stambi4a avatar stambi4a 126 Точки

От математиката която колегата изкара, само за strength и само за първият ред в резултата:

10 за BonusStats към GameType ' Rose Fire & Ice '

+ 68 за SUM(its.strength) на Druid Items

+  163 за SUM(its.strength) на Sorceress Items

+ MAX(its.strength), която e по-голямото от 17 за Druid и 11 за Sorceress, тоест 17

Общо: 258

Character-ът излиза Sorceress, ама нейсе...cheeky

MAX - овете са защото иначе sql хвърля грешка, която в SSMS e "Column "..."  is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Може да се тълкува, че решението е нагодено според синтаксиса и понеже няма групиране по Character става манджа с грозде, тоест Sorceress Character със статистика на Druid, макар, че това не е задължително, понеже се взима MAX и понякога MAX(name) и MAX(cs.strength) са за един и същ Character.

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