sql大数据自关联查询优化

wngchng 2019-02-01 03:12:04
1. 一张表a,字段有date(日期),city(城市),area(区域),cl(期初人口数量),ml(期末人口数量),zl(增加的人口数量)
2. 只有当天zl有变动的时候才会有数据,如果不变动,则当天不记录
3. 表内容示例:
4. date city area cl ml zl
5. 2018-05-01 cc1 a11 100 99 -1
6. 2018-05-02 cc1 a12 200 205 5
7. 2018-05-02 cc2 a21 50 100 50
8. 2018-05-03 cc1 a11 99 140 51
9. 要查每一个区域的一定时间范围内的期初数量和期末数量,例:查2018-05-01至2018-05-03,cc1-a11的期初是100.期末是140,cc1-a12的期初是200,期末是205,cc2-a21的期初是50,期末是100
10. 找到两种方式查期初和期末:一是取最小日期和最大日期所在的日期,据日期取找值;二是自关联。目前因为数据量到2千万,查询速度很慢,寻找优化方案
11. 在线等,着急,谢谢!
...全文
187 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
健康的猴子 2019-02-01
  • 打赏
  • 举报
回复
SELECT city,area, (select a1.cl from a as a1 where a1.date =min(a.date) and a1.city=a.city and a1.area=a.area ) as cl, (select a2.ml from a as a2 where a2.date =max(a.date) and a2.city=a.city and a2.area=a.area ) as ml FROM a where date between '2018-05-01' AND '2018-05-03' group by city,area 不知执行效率如何?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧