我需要找到10歲年齡範圍內的最常見事件,這些年齡範圍可以是年齡2至22歲,15至25歲,10至20歲等,其中name
& age
找到一個年齡跨度的平均年齡範圍
我創建了返回的平均年齡在SQL:
SELECT age, count(age)
FROM member
GROUP BY age
ORDER BY COUNT(age) DESC
LIMIT 1
感謝您的幫助!
我需要找到10歲年齡範圍內的最常見事件,這些年齡範圍可以是年齡2至22歲,15至25歲,10至20歲等,其中name
& age
找到一個年齡跨度的平均年齡範圍
我創建了返回的平均年齡在SQL:
SELECT age, count(age)
FROM member
GROUP BY age
ORDER BY COUNT(age) DESC
LIMIT 1
感謝您的幫助!
創建一個表ages
舉行的年齡範圍,你有興趣與age_lower
,age_upper
場和顯示名稱age_range
如「2至22」
加入表與放一個WHERE
條款年齡在下限和上限之間。
SELECT `age_range`, COUNT(`age`) AS age_count
FROM `member` INNER JOIN `ages`
ON age BETWEEN age_lower AND age_upper
GROUP BY age_range
ORDER BY COUNT(`age`) DESC, `age_range` ASC
我會試試這個謝謝! – user3014571
@ user3014571 - 我更正了SQL,它有語法錯誤,並添加了一個示例SQL小提琴。 – Tony
不幸的是,這仍然使用該方案中定義的預定年齡範圍。 1-10,11-20等我需要它來生成這些範圍。年齡2至22歲,15至25歲,10至20歲等。 – user3014571
這可能會解決這個問題。我添加的唯一東西是一張表,其值爲1..x,其中x是您的存儲桶數量。 @T可以很容易地替換爲你的MySQL表名。每個年齡的結果都是可能的年齡數據。然後統計多少個相等的集合。
--IGNORE BUILDING TEST DATA IN SQL SERVER
DECLARE @T TABLE(member INT,age INT)
DECLARE @X INT
SET @X=1
WHILE(@X<=100) BEGIN
INSERT INTO @T SELECT @X, CAST(RAND() * 100 AS INT)
SET @[email protected]+1
END
DECLARE @MinAge INT=1
DECLARE @MaxAge INT=100
--YOUR SET TABLE. TO MAKE LIFE EASY YOU NEED A TABLE OF 1..X
DECLARE @SET TABLE (Value INT)
DECLARE @SET_COUNT INT =10
DECLARE @LOOP INT=1
WHILE(@LOOP<[email protected]_COUNT) BEGIN
INSERT @SET SELECT @LOOP
SET @[email protected]+1
END
SELECT
MinAge,
MaxAge,
SetCount=COUNT(CountFlag)
FROM
(
SELECT
MinAge=AgeMinusSetCount,
MaxAge=AgePlusSetCount,
CountFlag=1
FROM
(
SELECT DISTINCT
ThisAge,
AgeMinusSetCount=(AgeMinusSetCount-1) + Value,
AgePlusSetCount=CASE WHEN (AgeMinusSetCount-1) + Value + @SET_COUNT > @MaxAge THEN @MaxAge ELSE (AgeMinusSetCount-1) + Value + @SET_COUNT END
FROM
(
SELECT
ThisAge=age,
AgeMinusSetCount=CASE WHEN (age - @SET_COUNT) < @MinAge THEN @MinAge ELSE (age) - @SET_COUNT END
FROM
@T
)RANGES
LEFT OUTER JOIN (SELECT Value FROM @SET) AS FanLeft ON 1=1
)AS DETAIL
)AS Summary
GROUP BY
MinAge,
MaxAge
ORDER BY
COUNT(CountFlag) DESC
我不相信你可以用一個SQL調用來做到這一點。您可能想要對存儲過程和Transact SQL進行一些研究(取決於您使用的服務器) –
添加您的表並顯示一些示例數據 – e4c5
@PaulColdrey - Transact SQL不會很有用,因爲它們已標記問題'mysql' – Tony