SQL统计每年每月的信息

                  year month amount
                  1991 1          1.1
                  1991 2          1.2
                  1991 3          1.3
                  1991 4           1.4
                  1992 1          2.1
                  1992 2           2.2
                  1992 3           2.3
                  1992 4           2.4
                  查成这样一个结果
                  year m1 m2 m3 m4
                  1991 1.1 1.2 1.3 1.4
                  1992 2.1 2.2 2.3 2.4
                  提示:这个与工资条非常类似,与学生的科目成绩也很相似。

 create table sales(id int auto_increment primary key,year
                  varchar(10), month varchar(10), amount float(2,1));
                  insert into sales values
                  (null,'1991','1',1.1),
                  (null,'1991','2',1.2),
                  (null,'1991','3',1.3),
                  (null,'1991','4',1.4),
                  (null,'1992','1',2.1),
                  (null,'1992','2',2.2),
                  (null,'1992','3',2.3),
                  (null,'1992','4',2.4);

 

 

sql:        select sales.year ,
                  (select t.amount from sales t where t.month='1' and t.year=
                  sales.year) '1',
                  (select t.amount from sales t where t.month='1' and t.year=
                  sales.year) '2',
                  (select t.amount from sales t where t.month='1' and t.year=
                  sales.year) '3',
                  (select t.amount from sales t where t.month='1' and t.year=
                  sales.year) as '4'
                  from sales group by year;

### 如何使用 SQL 查询按年、月、日列出数据 为了实现这一目标,可以通过构建复杂的 `SELECT` 语句来聚合不同时间粒度上的数据。具体来说: 对于每年的数据汇总,可以执行如下操作: ```sql SELECT YEAR(orderTime) AS 年, SUM(total) AS 销售合计 FROM 订单表 GROUP BY YEAR(orderTime); ``` 此查询会返回每一整年的销售总额[^2]。 针对每个月份的具体情况,则需进一步细化分组依据: ```sql SELECT YEAR(orderTime) AS 年, MONTH(orderTime) AS 月, SUM(total) AS 销售合计 FROM 订单表 GROUP BY YEAR(orderTime), MONTH(orderTime) ORDER BY 年, 月; ``` 上述命令不仅能够区分不同的月份,还能保持结果按照自然顺序排列,即先按年再按月升序显示各个月份的销售额信息。 最后,在处理每日级别的统计数据时,除了继续沿用之前的模式外,还需加入天作为额外的一个维度来进行更细致化的分析: ```sql SELECT YEAR(orderTime) AS 年, MONTH(orderTime) AS 月, DAY(orderTime) AS 日, SUM(total) AS 销售合计 FROM 订单表 GROUP BY YEAR(orderTime), MONTH(orderTime), DAY(orderTime) ORDER BY 年, 月, 日; ``` 这段脚本将会提供每一天具体的交易金额总和,并且同样遵循从早到晚的时间序列进行展现。 值得注意的是,如果希望即使某些日子没有任何交易也能显示出这些空白记录的话,可能还需要借助于预先创建好的日期范围表格并通过左连接的方式与其他实际存在的订单记录相结合,从而确保最终输出覆盖整个所需考察区间内的每一天[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值