6

私は次のクエリをかなり頻繁に使用していますが、より効率的な方法が必要であると確信しています。

基本的に、ユーザーテーブル内から、人々が生まれた数十年を数えています。

select count(*) as howmany, yyyy from bday where (((yyyy > '1949')
AND (yyyy < '1961')) AND (user_id = '63')) UNION
select count(*) as howmany, yyyy from bday where (((yyyy > '1959')
AND (yyyy < '1971')) AND (user_id = '63')) UNION
select count(*) as howmany, yyyy from bday where (((yyyy > '1969')
AND (yyyy < '1981')) AND (user_id = '63')) UNION
select count(*) as howmany, yyyy from bday where (((yyyy > '1979')
AND (yyyy < '1991')) AND (user_id = '63')) UNION
select count(*) as howmany, yyyy from bday where (((yyyy > '1989')
AND (yyyy < '2001')) AND (user_id = '63'))
4

2 に答える 2

6

10 年を計算し、それを使用してユーザーをグループ化できます。

SELECT
    COUNT(id) AS howmany,
    CEIL((`yyyy`+1)/10) AS decade,
    yyyy
FROM `bday`
GROUP BY decade
于 2012-05-19T08:39:52.597 に答える
0

人々が生まれた十年を数えるには:

select substring(yyyy, 1, 3) || '0''s' decade, count(*) howmany
from bday
group by decade
于 2012-05-19T08:43:38.043 に答える