对于每个日期和ID,我们必须按降序对值进行排名。
下面是输入表。
>input data
+------------+----+-------+
| date | id | value |
+------------+----+-------+
| 01-01-2018 | A | 20 |
| 01-01-2018 | A | 50 |
| 01-01-2018 | C | 40 |
| 01-01-2018 | B | 40 |
| 02-01-2018 | A | 30 |
| 03-01-2018 | C | 20 |
| 03-01-2018 | C | 40 |
| 04-01-2018 | B | 0 |
| 04-01-2018 | B | 40 |
| 05-01-2018 | B | 70 |
+------------+----+-------+
输出应如下所示:
>output data
+------------+----+-------+------+
| date | id | value | rank |
+------------+----+-------+------+
| 01-01-2018 | A | 50 | 1 |
| 01-01-2018 | A | 20 | 2 |
| 01-01-2018 | B | 40 | 1 |
| 01-01-2018 | C | 40 | 1 |
| 02-01-2018 | A | 30 | 1 |
| 03-01-2018 | C | 40 | 1 |
| 03-01-2018 | C | 20 | 2 |
| 04-01-2018 | B | 40 | 1 |
| 04-01-2018 | B | 0 | 2 |
| 05-01-2018 | B | 70 | 1 |
+------------+----+-------+------+
答案 0 :(得分:3)
您可以使用from g2p_en import G2p
texts = ["using g2p"]
g2p = G2p()
for text in texts:
out = g2p(text)
print(out)
,在RANK()
和date
上进行分区,并按id
降序排列:
value
输出:
SELECT *,
RANK() OVER (PARTITION BY date, id ORDER BY value DESC) AS ranking
FROM data
此查询将在标记了问题的所有DBMS上运行。