簡體   English   中英

在 SQL 表中限制 n 個重復的 m 個實體

[英]Limit m entities of n repetitions in SQL table

最近,我使用 sql 查詢為我提取所需的信息。 我有一個表,其中 col1 列中有很多重復值,但是,對於這個值的每個值都對應於第二列的唯一值,因此該表如下所示:

ID col1 col2
0 一個 a1
... ... ...
100 一個 100
101 b1
... ... ...
234 b234

但我只需要 row1 列的每個唯一值的前 50 個實體。 是否有可能,如果可以,如何在 SQL 中構建此查詢。 提前致謝:為了讓我的想法更清楚,我提供了 python 腳本的邏輯:

import pandas as pd

df = pd.read_csv('path/to/your_table.csv')
final_df = pd.DataFrame()

unique_val = pd.unique(df.col1).tolist()

for val in unique_val:
   temp_df = df[df.col1 == val][:50]
   final_df = pd.concat([final_df, temp_df], axis=1)

您可以嘗試使用 row_number() function。 然后選擇排名低於 50 的所有內容。

select t.* from(
    select *,
       ROW_NUMBER() OVER(PARTITION BY col1 ORDER BY col1) AS rnk
    from yourtable
)t
where t.rnk < 50

暫無
暫無

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

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