繁体   English   中英

如何从同一个表中找到计数(自连接)

[英]how to find count from same table (self join)

如何按列分组,其余分组按同一列的值进行分组。

我有包含进入退出场景的表,其中车辆从 1 toll_id 和方式 1 进入,具有 1 个条目条形码可以退出其他 toll_id 和存储在 exit_barcode 和方式 2 中的条形码。

table name paid_vehicle
-----------------------------------------------------------------------
 toll_id  |   vehicletype   |  entry_barcode | exit_barcode |   way   |
-----------------------------------------------------------------------
81        |     car         |   asdfghjk     |0             |1        |
-----------------------------------------------------------------------
83        |     bus         |   qwertyu      |0             |1        |
-----------------------------------------------------------------------
82        |     truck       |   dfghfgsd     |poiuyt        |2        |
-----------------------------------------------------------------------
84        |     hcm         |   sdfgsdfg     |lkjhg         |2        |
-----------------------------------------------------------------------
86        |     osv         |   zxcvb        |0             |1        |
-----------------------------------------------------------------------
81        |     bus         |   asdf         |0             |1        |
-----------------------------------------------------------------------
82        |     car         |   dfghghfg     |asdfghjk      |2        |
-----------------------------------------------------------------------
89        |     bus         |   dfhgkjhd     |qwertyu       |2        |
-----------------------------------------------------------------------
88        |     truck       |   poiuyt       |0             |1        |
-----------------------------------------------------------------------
87        |     hcm         |   lkjhg        |0             |1        |
-----------------------------------------------------------------------
87        |     osv         |   sdfgsdfg     |zxcvb         |2        |
-----------------------------------------------------------------------
89        |     bus         |   dfolfgpkg    |asdf          |2        |
-----------------------------------------------------------------------
81        |     car         |   jhfkggtg     |asdfghjk      |2        |
-----------------------------------------------------------------------

现在我想找到我从 1 进入并从其他人退出的条形码计数。

select * from paid_vehicle where way='2'  
 and exit_barcode  not in(select entry_barcode from paid_vehicle where   toll_id='81' and way='1' AND entry_barcode!='');
toll_id   |  exit_toll_id   | count
------------------------------------
81        |   82            |  900
------------------------------------
81        |   83            |  4500
------------------------------------
81        |   84            |  9050
------------------------------------
81        |   85            |  7910

您可以尝试加入进出条形码

    select t.tool_id, t.exit_toll_id, count(*) count 
    from  (
        select a.tool_id ,  a.entry_barcode, b.tool_id, exit_toll_id  b.exit_barcode
        from paid_vehicle a 
        left join paid_vehicle b on a.entry__barcode = b.entry_barcode
    )
    group by  t.tool_id, t.exit_toll_id
    order by t.tool_id, t.exit_toll_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM