找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2406|回复: 4

[求助] 如图如何用一句SQL查询出小麦产量高于水稻产量的省份

26

主题

84

帖子

84

积分

新手

积分
84
银发的index 发表于 2019-11-3 01:35:29 | 显示全部楼层 |阅读模式
QQ截图20191103013108.png

表名为farm

回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-11-4 12:55:27 | 显示全部楼层
本帖最后由 sheeboard 于 2019-11-4 13:07 编辑

用pandas写的
数据库连接用的是sqlalchemy
sql的话我回去找一下

  1. df=pd.read_sql('select * from farm', db)
  2. df1=df[df['crops']!='mianhua']
  3. df2=df1.pivot(index='province',columns='crops',values='weight')
  4. df2[df2['xiaomai']>df2['shuidao']]
复制代码
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-11-4 20:45:29 | 显示全部楼层
本帖最后由 sheeboard 于 2019-11-4 20:47 编辑

create table temptable select province,group_concat(if(crops='shuidao',weight,NULL)) as 'shuidao',group_concat(if(crops='xiaomai',weight,NULL)) as 'xiaomai' from farm group by province;
select * from temptable where cast(xiaomai as decimal(10,2))  > cast(shuidao as decimal(10,2));
用了两句,参考一下
Screenshot from 2019-11-04 20-42-07.png
回复 支持 反对

使用道具 举报

26

主题

84

帖子

84

积分

新手

积分
84
银发的index  楼主| 发表于 2019-11-5 09:05:48 | 显示全部楼层
sheeboard 发表于 2019-11-4 20:45
create table temptable select province,group_concat(if(crops='shuidao',weight,NULL)) as 'shuidao',gr ...

谢谢,要按省分组然后对水稻和小麦的行聚合为列,最后对聚合结果作筛选.

select province,
             MAX(case crops when 'xiaomai' then weight else 0 end) as 'xiaomai',
             MAX(case crops when 'shuidao' then weight else 0 end) as 'shuidao'
      from fuck
      group by province having xiaomai>shuidao
回复 支持 反对

使用道具 举报

0

主题

15

帖子

15

积分

贫民

积分
15
wwhywhy 发表于 2019-11-12 20:10:45 | 显示全部楼层
select t1.province from table as t1, table as t2
where t1.crops = 'xiaomai' and t2.crops = 'shuidao' and t1.province = t2.province
and t1.weight > t2.weight
回复 支持 反对

使用道具 举报

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

本版积分规则

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