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