寒光博客

[mysql]三表联合 分时 多字段分组 查询
2021年6月28日 早上 搭建环境,vsc mysql8 navicat mysql安装 下载msi文件安装是真...
扫描右侧二维码阅读全文
28
2021/06

[mysql]三表联合 分时 多字段分组 查询

2021年6月28日
早上 搭建环境,vsc mysql8 navicat
mysql安装 下载msi文件安装是真的省心,早上导入数据库莫名bug结果版本太低了,,换高版本 问题一大堆。
下午熟悉数据库 表间关系

逻辑

获取2021-06 这段时间每种卡类别的销售金额:
显示字段:日期,卡类别,消费金额

SELECT cardName,myDay,SUM(money)
FROM (

        SELECT cardName, DATE_FORMAT(create_time, "%Y年%m月") AS 'myDay', TV015 AS 'money'
        FROM opmtv b 
            INNER JOIN dw_cardmakedetail a ON a.cardNO = b.TV009
            INNER JOIN ref_cardtype c ON c.id = a.cardTypeId
        WHERE create_time BETWEEN '2021-06-01' AND '2021-07-01'
) t2
GROUP BY cardName, myDay; 

涉及知识点:表的连接 日期格式化 时间范围判断 多字段分组(未排序)
注意点: between and的数据范围是左开右闭, 若为00:00:00可以省略 数据规范也必须是两个数字
DATE_FORMAT();按照格式对某个日期操作
ORDER BY 排序
DESC 降序

最终优化 加了排序

SELECT
    `cardName`,
    DATE_FORMAT(`create_time`, "%Y年%m月") AS 'myDay',
    SUM(`TV015`) AS 'money'
FROM
    `opmtv` b
INNER JOIN `dw_cardmakedetail` a ON a.cardNO = b.TV009
INNER JOIN `ref_cardtype` c ON c.id = a.cardTypeId
WHERE
    /*时间范围 六月*/
    `create_time` BETWEEN '2021-06-01'
AND '2021-07-01'
GROUP BY
    /*某卡在时间范围内(年月)的分组数据*/
    `cardName`,
    `myDay`
ORDER BY
    `money` DESC;
本文作者:Author:     文章标题:[mysql]三表联合 分时 多字段分组 查询
本文地址:https://dxoca.cn/StudyNotes/388.html       百度已收录
版权说明:若无注明,本文皆为“Dxoca's blog (寒光博客)”原创,转载请保留文章出处。
Last modification:June 29th, 2021 at 10:20 am
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment