广告位联系
返回顶部
分享到

使用SQL实现车流量的计算的代码

MsSql 来源:互联网 作者:秩名 发布时间:2022-02-28 14:41:21 人浏览
摘要

卡口转换率 将数据导入hive,通过SparkSql编写sql,实现不同业务的数据计算实现,主要讲述车辆卡口转换率,卡口转化率:主要计算不同卡口下车辆之间的流向,求出之间的转换率。 1、查

卡口转换率

将数据导入hive,通过SparkSql编写sql,实现不同业务的数据计算实现,主要讲述车辆卡口转换率,卡口转化率:主要计算不同卡口下车辆之间的流向,求出之间的转换率。

在这里插入图片描述

1、查出每个地区下每个路段下的车流量

1

2

3

4

5

6

7

8

9

select

    car,

    monitor_id,

    action_time,

    ROW_NUMBER () OVER (PARTITION by car

ORDER by

    action_time) as n1

FROM

    traffic.hive_flow_action

此结果做为表1,方便后面错位连接使用

在这里插入图片描述

2、通过错位连接获取每辆车的行车记录

通过表1的结果,与自身进行错位链接,并以车牌为分区,拼接经过卡口的过程

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

(select

    t1.car,

    t1.monitor_id,

    concat(t1.monitor_id,

    "->",

    t2.monitor_id) as way

from

    (

    select

        car,

        monitor_id,

        action_time,

        ROW_NUMBER () OVER (PARTITION by car

    ORDER by

        action_time) as n1

    FROM

        traffic.hive_flow_action) t1

left join (

    select

        car,

        monitor_id,

        action_time,

        ROW_NUMBER () OVER (PARTITION by car

    ORDER by

        action_time) as n1

    FROM

        traffic.hive_flow_action) t2 on

    t1.car = t2.car

    and t1.n1 = t2.n1-1

where

    t2.action_time is not null)

在这里插入图片描述

获取到每辆车的一个行车记录,经过的卡口

3、获取行车过程中的车辆数

获取卡口1~卡口2,…等的车辆数有哪些,即拿上面的行车记录字段进行分区在进行统计

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

(select

    s1.way,

    COUNT(1) sumCar

from

    --行车过程

(select

        t1.car,

        t1.monitor_id,

        concat(t1.monitor_id,

        "->",

        t2.monitor_id) as way

    from

        (

        select

            car,

            monitor_id,

            action_time,

            ROW_NUMBER () OVER (PARTITION by car

        ORDER by

            action_time) as n1

        FROM

            traffic.hive_flow_action) t1

    left join (

        select

            car,

            monitor_id,

            action_time,

            ROW_NUMBER () OVER (PARTITION by car

        ORDER by

            action_time) as n1

        FROM

            traffic.hive_flow_action) t2 on

        t1.car = t2.car

        and t1.n1 = t2.n1-1

    where

        t2.action_time is not null)s1

group by way)

在这里插入图片描述

4、获取每个卡口的总车辆数

获取每个卡口最初的车辆数,方便后面拿行车轨迹车辆数/总车辆数,得出卡口之间的转换率

1

2

3

4

5

6

7

select

    monitor_id ,

    COUNT(1) sumall

from

    traffic.hive_flow_action

group by

    monitor_id

在这里插入图片描述

5、求出卡口之间的转换率

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

select

    s2.way,

    s2.sumCar / s3.sumall zhl

from

    (

    select

        s1.way,

        COUNT(1) sumCar

    from

        --行车过程

(

        select

            t1.car,

            t1.monitor_id,

            concat(t1.monitor_id,

            "->",

            t2.monitor_id) as way

        from

            (

            select

                car,

                monitor_id,

                action_time,

                ROW_NUMBER () OVER (PARTITION by car

            ORDER by

                action_time) as n1

            FROM

                traffic.hive_flow_action) t1

        left join (

            select

                car,

                monitor_id,

                action_time,

                ROW_NUMBER () OVER (PARTITION by car

            ORDER by

                action_time) as n1

            FROM

                traffic.hive_flow_action) t2 on

            t1.car = t2.car

            and t1.n1 = t2.n1-1

        where

            t2.action_time is not null)s1

    group by

        way)s2

left join

    --每个卡口总车数

(

    select

        monitor_id ,

        COUNT(1) sumall

    from

        traffic.hive_flow_action

    group by

        monitor_id) s3 on

    split(s2.way,

    "->")[0]= s3.monitor_id

在这里插入图片描述


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/llAl_lAll/article/details/123134334
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计