# 跨主题维基编辑10次和100次徽章

**URL:** https://meta.discourse.org/t/badges-for-10-and-100-wiki-edits-across-topics/291287
**Category:** Data & reporting
**Tags:** wiki-posts, sql-triggered-badge
**Created:** [2024年一月11日 09:40 UTC](https://meta.discourse.org/t/badges-for-10-and-100-wiki-edits-across-topics/291287 "2024-01-11T09:40:45Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [2024年一月11日 09:40 UTC](https://meta.discourse.org/t/badges-for-10-and-100-wiki-edits-across-topics/291287/1 "2024-01-11T09:40:45Z")

</div>

继续关于[默认徽章查询](https://meta.discourse.org/t/the-default-badge-queries/276812)的讨论：

> [@JammyDodger](#):
>
> ### 🥉 Wiki Editor
> 
> ```plaintext
> SELECT pr2.user_id, pr2.post_id, pr2.created_at granted_at
> FROM
> (
> SELECT MIN(pr.id) id
> FROM post_revisions pr
> JOIN badge_posts p on p.id = pr.post_id
> WHERE p.wiki
> AND NOT pr.hidden
> AND (:backfill OR p.id IN (:post_ids))
> GROUP BY pr.user_id
> ) as X
> JOIN post_revisions pr2 ON pr2.id = X.id
> 
> ```

我正在尝试创建一个银牌徽章，要求进行 10 次 wiki 编辑（跨所有帖子），以及一个金牌徽章，要求进行 100 次 wiki 编辑——但我和论坛助手都毫无进展。

有什么建议吗？

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2024年一月11日 18:58 UTC](https://meta.discourse.org/t/badges-for-10-and-100-wiki-edits-across-topics/291287/2 "2024-01-11T18:58:56Z")

</div>

我一直在尝试使用这种格式来避免在“中途”引入徽章时，由于 `MIN`/`MAX` 问题而错误地指定 `granted_at` 日期（当人们在引入徽章之前尚未达到标准时，它们往往效果更好）。

所以可能像这样：

```sql
SELECT 
    user_id,
    created_at granted_at
FROM (
    SELECT 
        pr.user_id,
        pr.created_at,
        ROW_NUMBER() OVER (PARTITION BY pr.user_id ORDER BY pr.created_at) as row_number
    FROM post_revisions pr
    INNER JOIN badge_posts p ON p.id = pr.post_id
    WHERE p.wiki = TRUE
      AND pr.hidden = FALSE
      AND pr.user_id > 0
) AS revisions
WHERE row_number = 100

```

（我没有包含通常的“不包括已删除的主题或帖子”，因为对旧维基的编辑可能仍然应该被计算在内。我也没添加回填，但我认为这个应该“每日更新”作为触发器？）

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [2024年一月11日 19:23 UTC](https://meta.discourse.org/t/badges-for-10-and-100-wiki-edits-across-topics/291287/3 "2024-01-11T19:23:06Z")

</div>

太棒了！这是指在维基帖子中进行 100 次编辑，还是编辑 100 个维基帖子？

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2024年一月11日 19:24 UTC](https://meta.discourse.org/t/badges-for-10-and-100-wiki-edits-across-topics/291287/4 "2024-01-11T19:24:45Z")

</div>

那就是 100 次维基帖子修订，所以编辑一个帖子一百次（或一百零一次）就会获得徽章。

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2024年一月12日 11:20 UTC](https://meta.discourse.org/t/badges-for-10-and-100-wiki-edits-across-topics/291287/5 "2024-01-12T11:20:44Z")

</div>

经过一番额外的思考（以及与 Bert 的简短商议 🙂），我认为 `ROW_NUMBER` 会是更好的选择。我将编辑上面的查询。 👍

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2024年二月11日 11:21 UTC](https://meta.discourse.org/t/badges-for-10-and-100-wiki-edits-across-topics/291287/6 "2024-02-11T11:21:12Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
