楼主: lizhewenbei
2587 14

[问答] 请问大家,如何采用sql语句,求出每年6、7、8三个月份的平均气温? [推广有奖]

  • 15关注
  • 5粉丝

副教授

36%

还不是VIP/贵宾

-

威望
0
论坛币
309 个
通用积分
11.4770
学术水平
4 点
热心指数
13 点
信用等级
5 点
经验
9699 点
帖子
609
精华
0
在线时间
496 小时
注册时间
2008-2-6
最后登录
2024-1-9

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请问大家,如何采用sql语句,求出每年6、7、8三个月份的平均气温?

原始数据 temperature.zip (26.7 KB) 本附件包括:
  • temperature.csv
如下:
provinceyearmonthtemperature
安徽

1996

1

3

安徽

1996

2

3.8

安徽

1996

3

8.1

安徽

1996

4

15.2

安徽

1996

5

21.3

安徽

1996

6

24.9

安徽

1996

7

27.3

安徽

1996

8

27.9

安徽

1996

9

23.9

安徽

1996

10

17.7

安徽

1996

11

9.9

安徽

1996

12

6.4

安徽

1997

1

2.8

安徽

1997

2

5.4

安徽

1997

3

11.2

安徽

1997

4

16.4

安徽

1997

5

24

安徽

1997

6

26.5

安徽

1997

7

28

安徽

1997

8

28.5

安徽

1997

9

22.5

安徽

1997

10

19

安徽

1997

11

10.6

安徽

1997

12

5.9



我是这么写的,但是不行

proc sql;create table tmp1 as select distinct
province,year,
mean(temperature) as temperature_avgyear,
case when year in (6,7,8) then mean(temperature) else . end as temperature_avgwinter

from
temperature
group by province,year;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:sql语句 sql province month vince

沙发
z8938560 在职认证  发表于 2017-4-24 15:51:32 |只看作者 |坛友微信交流群
我不会,但是帮你顶一下

使用道具

藤椅
lizhewenbei 学生认证  发表于 2017-4-24 15:57:11 |只看作者 |坛友微信交流群
z8938560 发表于 2017-4-24 15:51
我不会,但是帮你顶一下
非常感谢您!

使用道具

板凳
baoluanlu 发表于 2017-4-24 15:59:43 |只看作者 |坛友微信交流群
你试一下 select province,year, avg(temperature) from 表名
where month in (6,7,8)
group by province, year
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 1 + 3 + 3 + 3 精彩帖子

总评分: 论坛币 + 1  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

报纸
lizhewenbei 学生认证  发表于 2017-4-24 16:04:48 |只看作者 |坛友微信交流群
baoluanlu 发表于 2017-4-24 15:59
你试一下 select province,year, avg(temperature) from 表名
where month in (6,7,8)
group by province ...
非常感谢!其实,我除了需要计算6、7、8三个月以外,还要计算全年的平均气温。如果采用了where month in (6,7,8),那么这个程序中就没法计算全年平均气温了啊

使用道具

地板
baoluanlu 发表于 2017-4-24 16:34:45 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2017-4-24 16:04
非常感谢!其实,我除了需要计算6、7、8三个月以外,还要计算全年的平均气温。如果采用了where month in  ...
需要全年的话,直接把month那一段删了

使用道具

7
lizhewenbei 学生认证  发表于 2017-4-24 17:43:45 |只看作者 |坛友微信交流群
baoluanlu 发表于 2017-4-24 16:34
需要全年的话,直接把month那一段删了
嗯嗯!我的意思是,用一个sql语句,即能求全年的平均气温,又能求6,7,8三个月的平均气温,不知道是否可以?

使用道具

8
lizhewenbei 学生认证  发表于 2017-4-24 17:44:08 |只看作者 |坛友微信交流群
baoluanlu 发表于 2017-4-24 16:34
需要全年的话,直接把month那一段删了
比如用case when语句?

使用道具

9
lizhewenbei 学生认证  发表于 2017-4-24 17:44:08 |只看作者 |坛友微信交流群
baoluanlu 发表于 2017-4-24 16:34
需要全年的话,直接把month那一段删了
比如用case when语句?

使用道具

10
baoluanlu 发表于 2017-4-24 18:04:48 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2017-4-24 17:44
比如用case when语句?
这个我感觉没有必要,因为麻烦很多,code如下:
select a.avgtemp,b.avgtemp from
(select province,year,avg(temperature) avgtemp from 表名
where month in (1,2,3)
group by province, year) a,
(select province,year,avg(temperature) avgtemp from 表名
group by province, year) b
where a.province=b.province and a.year=b.year

这个我也没有跑,你试试看,可能有的地方还需要调试
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 3 + 3 + 3 精彩帖子

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 15:03