Loading...
Bobosam avatar Bobosam 185 Точки

[DB-Fundamentals - Data Aggregation] - Problem 9.Age Groups

Нещо не мога да се преборя с джъджа. Виждам, че има хора, които са се справили. Явно аз бъркам нещо. Кода ми е следния: 

SELECT '[0-10]' AS age_group, COUNT(wd.id) AS wizard_count
FROM wizzard_deposits wd
WHERE wd.age BETWEEN 0 AND 10
UNION ALL
SELECT '[11-20]' AS age_group, COUNT(wd.id) AS wizard_count
FROM wizzard_deposits wd
WHERE wd.Age BETWEEN 11 AND 20
UNION ALL
...........................................................
SELECT'[61+]' AS age_group, COUNT(wd.id) AS wizard_count
FROM wizzard_deposits wd
WHERE wd.Age > 60

 

Тагове:
0
Databases Basics - MySQL
vancho avatar vancho 430 Точки
Best Answer

Аз не мисля, че логиката ти не е много вярна. Виж аз как съм го направил (помъчих се малко, но излезна), ако ти е от полза.

 

SELECT

CASE 
    WHEN age >= 0 AND age < 11 THEN '[0-10]'
    WHEN age >= 11 AND age < 21 THEN '[11-20]'
    WHEN age >= 21 AND age < 31 THEN '[21-30]'
    WHEN age >= 31 AND age < 41 THEN '[31-40]'
    WHEN age >= 41 AND age < 51 THEN '[41-50]'
    WHEN age >= 51 AND age < 61 THEN '[51-60]'
    WHEN age >= 61 THEN '[61+]'

END AS age_group, COUNT(age) AS wizard_count FROM wizzard_deposits

GROUP BY age_group

0
03/10/2016 16:20:22
Bobosam avatar Bobosam 185 Точки

Сега видях къде е разликата, При теб не излиза групата  [0-10] .Понеже няма такива въобще не влиза в този кейс и не се отпечатва, а при мен излиза с каунт нула. Явно условието не е коректно.

Благодаря.

0
GallinaSt avatar GallinaSt 2 Точки

Как групираш по age_group, когато SELECT-клаузата се изпълнява логически след GROUP BY- клаузата и реално тази променлива в  GROUP BY не е видима?

 

0
dead4y avatar dead4y 62 Точки

Обедини ги в една заявка като използваш CASE ... WHEN ...

1
Bobosam avatar Bobosam 185 Точки

Не мисля, че това е проблема. Заявката си работи в Heidi но в джъджа не минава. Ще опитам и така. Благодаря.

0
RFilipov avatar RFilipov 136 Точки

MS SQL 100/100 по твоя начин:

SELECT TOTALRESULT.AgeGroup, 
	   TOTALRESULT.WizardCount FROM
	   (SELECT '[0-10]' AS [AgeGroup], COUNT(wd.id) AS [WizardCount]
	   FROM WizzardDeposits wd
	   WHERE wd.age BETWEEN 0 AND 10
	   -------------------------------
	   UNION ALL
	   SELECT '[51-60]' AS [AgeGroup], COUNT(wd.id) AS [WizardCount]
	   FROM WizzardDeposits wd
	   WHERE wd.Age BETWEEN 51 AND 60
	   UNION ALL
	   SELECT'[61+]' AS [AgeGroup], COUNT(wd.id) AS [WizardCount]
	   FROM WizzardDeposits wd
	   WHERE wd.Age > 60) AS TOTALRESULT
	   WHERE TOTALRESULT.WizardCount <> 0

 

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