[英]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.