簡體   English   中英

根據第一列的不同值計算一列的不同值

[英]Count distinct values of a Column based on Distinct values of First Column

我正在處理大量的交通數據。 我想識別改變了車道的車輛,我是VB.Net的Microsoft Access。

交通數據:

Vehicle_ID   Lane_ID   Frame_ID   Distance  
        1        2        12        100  
        1        2        13        103  
        1        2        14        105  
        2        1        16        130  
        2        1        17        135  
        2        2        18        136  
        3        1        19        140  
        3        2        20        141  

我試圖區分Vehicle_ID,然后計數(區別Lane_ID)。 我可以列出不同的Vehicle_ID,但它會計算總Lane_ID而不是Distinct Lane_ID。

SELECT
    Distinct Vehicle_ID, count(Lane_ID)
FROM Table1
GROUP BY Vehicle_ID

顯示結果:

Vehicle_ID  Lane Count  
       1    3  
       2    3  
       3    2  

正確結果:

Vehicle_ID  Lane Count  
       1    1  
       2    2  
       3    2

除此之外,我想獲得所有更改了車道的Vehicle_ID(所有數據,包括以前的車道和新的車道)。 輸出結果將類似於:Vehicle_ID Lane_ID Frame_ID Distance
2 1 17 135
2 2 18 136
3 1 19 140
3 2 20 141

Access不支持COUNT(DISTINCT columnname)因此請執行以下操作:

SELECT t.Vehicle_ID, COUNT(t.Lane_ID) AS [Lane Count]
FROM (
  SELECT DISTINCT Vehicle_ID, Lane_ID FROM Table1
) AS t
GROUP BY t.Vehicle_ID

所以

識別改變車道的車輛

您需要添加到上述查詢中:

HAVING COUNT(t.Lane_ID) > 1
SELECT
  Table1.Vehicle_ID,
  LANE_COUNT
FROM Table1
JOIN (
   SELECT Vehicle_ID, COUNT(*) as LANE_COUNT FROM (
      SELECT distinct Vehicle_ID, Lane_ID FROM Table1
   ) dTable1 # distinct vehicle and land id
   GROUP BY Vehicle_ID # counting the distinct
) cTable1 ON cTable1.Vehicle_ID = Table1.Vehicle_ID # join the table with the counting

我想你應該一一做

  1. 區分車輛ID和土地ID
  2. 計算不同的組合
  3. 並將結果與​​實際表合並。

如果您想要更改車道的車輛,則可以執行以下操作:

SELECT Vehicle_ID,
       IIF(MIN(Lane_ID) = MAX(Lane_ID), 0, 1) as change_lane_flag
FROM Table1
GROUP BY Vehicle_ID;

我認為這與計算不同車道的數量一樣好,因為您沒有在計算實際的“車道變化”。 因此,即使車輛多次改變車道,這也將返回“ 2”:

    2        1        16        130  
    2        1        17        135  
    2        2        18        136  
    2        1        16        140  
    2        1        17        145  
    2        2        18        146  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM