Mysql 创建类别后计算百分比和总数

Mysql 创建类别后计算百分比和总数,mysql,Mysql,我有这个疑问 SELECT trage, CASE trage WHEN '<18' THEN SUM(CASE WHEN AGE <18 THEN 1 ELSE 0 END) WHEN '18-24' THEN SUM(CASE WHEN AGE >= 18 AND AGE <= 24 THEN 1 ELSE 0 END) WHEN '25-34' THEN SUM(CASE WHEN AGE >

我有这个疑问

SELECT 
    trage,
    CASE trage 
        WHEN '<18' THEN SUM(CASE WHEN AGE <18 THEN 1 ELSE 0 END)
        WHEN '18-24' THEN SUM(CASE WHEN AGE >= 18 AND AGE <= 24 THEN 1 ELSE 0 END)
        WHEN '25-34' THEN SUM(CASE WHEN AGE >= 25 AND AGE <= 34 THEN 1 ELSE 0 END)
        WHEN '35-44' THEN SUM(CASE WHEN AGE >= 35 AND AGE <= 44 THEN 1 ELSE 0 END)
        WHEN '45-54' THEN SUM(CASE WHEN AGE >= 45 AND AGE <= 54 THEN 1 ELSE 0 END)
        WHEN '>=55' THEN SUM(CASE WHEN AGE >= 55 THEN 1 ELSE 0 END)
    END Total
FROM 
(   SELECT 
        t_personne.pers_date_naissance, 
        t_personne.pers_date_inscription, 
        TIMESTAMPDIFF(Year, t_personne.pers_date_naissance, t_personne.pers_date_inscription) 
        - CASE 
            WHEN MONTH(t_personne.pers_date_naissance) > MONTH(t_personne.pers_date_inscription) 
             OR (MONTH(t_personne.pers_date_naissance) = MONTH(t_personne.pers_date_inscription) 
             AND DAY(t_personne.pers_date_naissance) > DAY(t_personne.pers_date_inscription))
            THEN 1 ELSE 0 
          END AS AGE
    FROM t_personne
) AS Total
CROSS JOIN
(   SELECT '<18' trage UNION ALL
    SELECT '18-24' UNION ALL
    SELECT '25-34' UNION ALL
    SELECT '35-44' UNION ALL
    SELECT '45-54' UNION ALL
    SELECT '>=55'
)a
GROUP BY trage
ORDER BY FIELD(trage, '<18', '18-24', '25-34', '35-44', '45-54', '>=55')
它为所有类别提供了一个包含两列trage和Total的表格

如何将列百分比与列总数的行总数和%


谢谢你的帮助,暂时你不能这样做。为了支持这个MySQL需要窗口功能支持,而它现在还没有。如果您需要这样的函数,我建议您切换到PostgreSQL


还可以看看这个问题:

谢谢,但为什么我的声誉为a-2?这只是个问题?我不明白为什么这是一个过度的条款?不知道为什么人们对你的问题投了反对票,这是一个清晰简单、格式良好的问题。尽管前面的示例更有用:至于over子句,这是SQL中窗口函数的语法。以下是您在PostgreSQL中的做法,例如:这就是生活,但感谢您启发我:我是自学成才的业余爱好者。我有一个带有phpmyadmin和mysql的外部服务器,所以我会看到你推荐给我的曲目。这是一个很多人都有的好问题: