吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1300|回复: 11
收起左侧

[已解决] 求大佬帮忙指点MySQL的select 语句怎么写

[复制链接]
luxingyu329 发表于 2022-5-30 11:14
本帖最后由 luxingyu329 于 2022-5-30 14:39 编辑

最近在看MySQL相关的东西,感觉要入门了,现在有这样的一查询语句困扰我很长时间了,不知道怎么写,求大佬指点,表的文件我放在了蓝奏里,地址是:https://luxingyu329.lanzoub.com/i0OcG05mwukf

表的样式是这样的

我想让左边的表的数据能过聚合函数显示右表的样子,

我可以做到   select 编号,sum(交易金额),sum(盈利金额) form 【表名】 where 交易日期 between '2022-5-1' and '2022-5-4' group by 编号;

但是这样显示的只有编号与汇总,因为是分组,显示不了名称与进货日期

如果在group by 编号 后面加上字段的话会对求和结果产生影响,  不知道我说明白没有,求大佬们帮忙,其实就是左边表实现右边的样子,
两张表.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

magic。 发表于 2022-5-30 11:28
select和group by的时候都加上名称和日期行不行

免费评分

参与人数 1吾爱币 +1 收起 理由
luxingyu329 + 1 热心回复!

查看全部评分

十好小学生 发表于 2022-5-30 11:34
本帖最后由 十好小学生 于 2022-5-30 11:37 编辑

我也是最近学的数据库  我学的也不深  我根据我的理解说一下这个问题
首先,我不明白你的主键是谁,感觉你的表写的不合适
其次,如果你想要显示名称与进货日期的话你可以分组之后再和原表进行连接,
然后,对于你这个问题,我在想,能不能根据多个属性进行分组,我查了一下,有个网页有讲
https://www.cnblogs.com/zhuchenglin/p/9732612.html
对于你这道题来说,应该可以 group by 编号,名称,进货日期

对于我说的 感觉你的表有问题这一看法再说一下我的解释,
我看你的标号是蔬菜水果加数字,你的表里是不是还需要一个类似Sno、Cno的东西


再附一个:
https://www.w3school.com.cn/sql/sql_groupby.asp#:~:text=GROUP%20BY%20%E4%B8%80%E4%B8%AA,BY%20Customer%2COrderDate

免费评分

参与人数 1热心值 +1 收起 理由
luxingyu329 + 1 热心回复! 谢谢

查看全部评分

SpeII 发表于 2022-5-30 11:35
在名称与进货日期前面加上聚合函数试试
[SQL] 纯文本查看 复制代码
select 编号,sum(交易金额),sum(盈利金额),max(名称),max(进货日期) form 【表名】 where 交易日期 between '2022-5-1' and '2022-5-4' group by 编号;

免费评分

参与人数 1热心值 +1 收起 理由
luxingyu329 + 1 谢谢@Thanks! 可以的,

查看全部评分

q1730780948 发表于 2022-5-30 11:41
把sql表文件贴出来,可以试试看

免费评分

参与人数 1吾爱币 +1 收起 理由
luxingyu329 + 1 热心回复!

查看全部评分

jiuchengkong 发表于 2022-5-30 11:51
select 编号,名称,批发日期,sun(交易金额) as 5月1日至4日交易金额汇总,sum(盈利金额) as 5月1日至4日盈利金额汇总,
        from 表名 group by 名称
                having 交易日期 between ‘2022/5/1’ and ‘2022/5-4’;


交易区间段。我也不明白
然后你试试这样子,行不行

免费评分

参与人数 1吾爱币 +1 收起 理由
luxingyu329 + 1 热心回复! 多谢

查看全部评分

SinerW 发表于 2022-5-30 11:53
select max(编号) as 编号,max(名称) as 名称,max(批发日期) as 批复日期,sum(交易金额) as 交易金额,sum(盈利金额) as 盈利金额,min(交易日期)||'---'||max(交易日期) from 你的表 group by 编号

思路是编号和名称为按组划分的条件,然后求出交易金额和盈利金额的和,交易区间段用字符串拼接,使用min和max函数得到交易日期的最小值和最大值后拼接在一起,思路是这样,我本地没安装mysql的库没有验证

免费评分

参与人数 1热心值 +1 收起 理由
luxingyu329 + 1 热心回复! 多谢,我试试

查看全部评分

Goldrepo 发表于 2022-5-30 13:23
select id '编号',name '名称',p_date '批发日期',sum(fee) '交易金额',sum(amount) '盈利金额',concat(min(create_date),'--',max(create_date)) '交易区间段'
from t_aaa
where create_date >= '2022/05/01'
group by id,name,p_date;
效果如下,第一个是原始数据

图片.png
这是汇总结果

图片.png

免费评分

参与人数 1热心值 +1 收起 理由
luxingyu329 + 1 最后一个热心给你,谢谢,我研究一下,

查看全部评分

4899 发表于 2022-5-30 13:27
SinerW 发表于 2022-5-30 11:53
select max(编号) as 编号,max(名称) as 名称,max(批发日期) as 批复日期,sum(交易金额) as 交易金额,sum( ...

单从代码上看,这个可行性比较高
然并卵zh 发表于 2022-5-30 13:45
magic。 发表于 2022-5-30 11:28
select和group by的时候都加上名称和日期行不行

这样肯定不行,因为结果是通过蔬菜水果的名称分组的,你这样就是通过这三个字段分组了

免费评分

参与人数 1吾爱币 +1 收起 理由
luxingyu329 + 1 我很赞同!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表