资讯专栏INFORMATION COLUMN

MySQL区间分组查询

Jeffrrey / 3256人阅读

摘要:假设表为会员信息表,需要统计男性会员年龄各阶段的出现的人数会员名称性别,男女年龄假设现在数据库中有数据如下方法一说明利用划出个区间再利用函数将个区间分别返回一个列名方法二结果

假设a表为会员信息表,需要统计男性会员年龄各阶段的出现的人数

CREATE TABLE `a` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT "" COMMENT "会员名称",
  `sex` tinyint(1) unsigned NOT NULL DEFAULT "0" COMMENT "性别,1、男 2、女",
  `age` tinyint(3) unsigned NOT NULL DEFAULT "0" COMMENT "年龄",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

假设现在数据库中有数据如下:

方法一:

SELECT
    ELT(
        INTERVAL (age, 0, 20, 30, 40),
        "1-20",
        "21-30",
        "31-40",
        "40+"
    ) AS age_area,
    COUNT(name) AS num
FROM
    `a`
WHERE
    sex = 1
GROUP BY
    ELT(
        INTERVAL (age, 0, 20, 30, 40),
        "1-20",
        "21-30",
        "31-40",
        "40+"
    );

说明

利用 interval 划出4个区间

再利用 elt 函数将4个区间分别返回一个列名

方法二:

SELECT
    (
        CASE
        WHEN age >= 1
        AND age <= 20 THEN
            "1-20"
        WHEN age > 20
        AND age <= 30 THEN
            "21-30"
        WHEN age > 30
        AND age <= 40 THEN
            "31~40"
        ELSE
            "40+"
        END
    ) AS age_area,
    count(name) AS num
FROM
    a
WHERE
    sex = 1
GROUP BY
    (
        CASE
        WHEN age >= 1
        AND age <= 20 THEN
            "1-20"
        WHEN age > 20
        AND age <= 30 THEN
            "21-30"
        WHEN age > 30
        AND age <= 40 THEN
            "31~40"
        ELSE
            "40+"
        END
    );

结果

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/47757.html

相关文章

  • mysql的设计与优化专题(5)】慢查询详解

    摘要:查询执行的时间范围。该查询在本次分析中总的时间占比。查询对象第三部分每一种查询的详细统计结果由上图可见号查询的详细统计结果,最上面的表格列出了执行次数最大最小平均等各项目的统计。 查询mysql的操作信息 show status -- 显示全部mysql操作信息 show status like com_insert%; -- 获得mysql的插入次数; show status l...

    muzhuyu 评论0 收藏0
  • 常见的统计解决方案

    摘要:一个很常见,也很简单的统计需求。二统计数量用,统计总和用函数,有的地方,少不了这些聚合函数。但可以解决问题。 最近用MySQL做统计的需求比较多,这里整理一些常用的场景方便后期查阅,同时也是抛砖引玉的过程。其中包括普通的分组统计,连续的每日统计,区间范围统计。 技术:MySQL, SpringDataJpa, Kotlin说明:文章前半部分是场景分析,后半部分是语法分析要点:GROUP...

    gaara 评论0 收藏0
  • 30分钟SQL指南

    摘要:分钟指南本篇文章是必知必会的读书笔记,必知必会的英文名叫做。目前手边的数据库是,所以以下示例均是由演示。统计班人数数据分组使用进行数据分组,可以使用聚合函数对分组数据进行汇总,使用对分组数据进行筛选。单引号表示字符串。 30分钟SQL指南 本篇文章是 SQL 必知必会 的读书笔记,SQL必知必会的英文名叫做 Sams Teach Yourself in 10 Minutes。但是,我肯...

    Galence 评论0 收藏0
  • MySQL基础

    摘要:表名具有唯一性。表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似中的属性表中的数据是按行存储的,每一行类似于中的对象。 本单元目标 一、为什么要学习数据库 二、数据库的相关概念 DBMS、DB、SQL 三、数据库存储数据的特点 四、初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ ...

    IamDLY 评论0 收藏0
  • 题库分库分表架构方案

    摘要:个人博客地址方案项目背景在现在题库架构下,针对新购买的多道数据进行整合,不影响现有功能。数据切分尽量通过数据冗余或表分组来降低跨库的可能。 个人博客地址 https://www.texixi.com/2019/0... 方案 项目背景 在现在题库架构下,针对新购买的1300W多道数据进行整合,不影响现有功能。由于数据量偏多,需要进行数据的切分 目标场景 兼容旧的功能 对1300多W...

    kohoh_ 评论0 收藏0

发表评论

0条评论

Jeffrrey

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<