作爲我從我的問題得到的答案,它促使我堅持應用我的代碼出於某種原因,爲什麼它沒有奏效。Mysql與CASE選擇不檢索其他列值?
這是我在桌上的一部分數據。
原始代碼:
SELECT AGE_RANGE, COUNT(*) FROM (
SELECT CASE
WHEN YearsOld BETWEEN 0 AND 5 THEN '0-5'
WHEN YearsOld BETWEEN 6 AND 10 THEN '6-10'
WHEN YearsOld BETWEEN 11 AND 15 THEN '11-15'
WHEN YearsOld BETWEEN 16 AND 20 THEN '16-20'
WHEN YearsOld BETWEEN 21 AND 30 THEN '21-30'
WHEN YearsOld BETWEEN 31 AND 40 THEN '31-40'
WHEN YearsOld > 40 THEN '40+'
END AS 'AGE_RANGE'
FROM (
SELECT YEAR(CURDATE())-YEAR(DATE(birthdate)) 'YearsOld'
FROM MyTable
) B
) A
GROUP BY AGE_RANGE
,這裏是結果。
我想要做的是,我想補充另一列這將有多少人指望誰是在這方面這將是位置,你會看到在其中包括珀斯,西澳大利亞州,森伯裏,維多利亞等。
首先試圖解決我的問題
正如你會看到下面,我已經添加了位置,和COUNT(位置)上文獲得位置的名稱和多少的位置,是重複計數在桌子裏。
SELECT AGE_RANGE, COUNT(*), location, COUNT(location) loc FROM (
SELECT CASE
WHEN YearsOld BETWEEN 0 AND 5 THEN '0-5'
WHEN YearsOld BETWEEN 6 AND 10 THEN '6-10'
WHEN YearsOld BETWEEN 11 AND 15 THEN '11-15'
WHEN YearsOld BETWEEN 16 AND 20 THEN '16-20'
WHEN YearsOld BETWEEN 21 AND 30 THEN '21-30'
WHEN YearsOld BETWEEN 31 AND 40 THEN '31-40'
WHEN YearsOld > 40 THEN '40+'
END AS 'AGE_RANGE', 'location'
FROM (
SELECT YEAR(CURDATE())-YEAR(DATE(birthday)) 'YearsOld'
FROM event_participants
) B
) A
FROM event_participants WHERE location <> '' GROUP BY location HAVING loc >= 1 ORDER BY loc DESC LIMIT 5
哪些結果..
顯然,從神的幫助聽力不工作了,以好..
我的第二次嘗試來解決這個問題
SELECT AGE_RANGE, COUNT(*), location FROM (
SELECT CASE
WHEN YearsOld BETWEEN 0 AND 5 THEN '0-5'
WHEN YearsOld BETWEEN 6 AND 10 THEN '6-10'
WHEN YearsOld BETWEEN 11 AND 15 THEN '11-15'
WHEN YearsOld BETWEEN 16 AND 20 THEN '16-20'
WHEN YearsOld BETWEEN 21 AND 30 THEN '21-30'
WHEN YearsOld BETWEEN 31 AND 40 THEN '31-40'
WHEN YearsOld > 40 THEN '40+'
END AS 'AGE_RANGE', 'location'
FROM (
SELECT YEAR(CURDATE())-YEAR(DATE(birthday)) 'YearsOld'
FROM event_participants
) B
) A
GROUP BY AGE_RANGE
和結果是...
而不是顯示國家的名字,只顯示位置。
好吧..
長話短說,代碼有什麼問題?任何解決這個東西?
這就像,我需要的結果是,
AGE_RANGE COUNT(*) location total number of same location
16-20 4 Name of location #
21-30 45 Name of location #
31-40 79 Name of location #
40+ 102 Name of location #
請使用SQL小提琴:) –
如果'location'是一個列,請不要用單引號,'AS'AGE_RANGE',位置'來包裝它。<<刪除它並查看它是否有效。 –