Hive

僅當每個唯一值的記錄多於 N 條時才進行 SQL 過濾

  • February 20, 2020

這是我的範例 SQL 語句:

SELECT DAY,
      name,
      value
FROM my_table
WHERE DAY = '${date}'
GROUP BY DAY
        name,
        value
ORDER BY name ASC

例如,“名稱”列中有 3 個唯一名稱:Alice、Bob、Clark。

Alice 有 5 行,Bob 有 9 行,Clark 有 12 行。

如果具有相同值的行 > 10 行,我想添加一個過濾器。‘Clark’ 在這種情況下滿足。

如何添加這個?在哪裡?

歡迎

這就是你想要的。但也請遵循下面給出的說明。

SELECT day,
      ip_address,
      user_name,
      timestamp,
      count(ip_address) AS tct
FROM my_table
WHERE day = current_date()
GROUP BY ip_address
HAVING tct> 10
ORDER BY ip_address ASC
  1. 不要使用 select * 而是給出特定的列名。
  2. 您在問題中談到每個名稱的計數,但您的程式碼按 DAY、名稱、值分組 - 檢查它是否適合您。
  3. 最好(總是)列出您的資料結構和所需的輸出以及您的程式碼以獲得最佳答案。

引用自:https://dba.stackexchange.com/questions/260103