MySQL:在SELECT查询期间将1标记为每个唯一的事件

问题描述 投票:0回答:1

样本表表名称:

| ID | Name | Month | Quarter | Year |
| 1  | A    | Jan   |  1      | 2019 |
| 1  | A    | Feb   |  1      | 2019 |
| 2  | B    | May   |  2      | 2019 |
| 3  | C    | May   |  2      | 2018 |

[嗨,这是我使用SELECT查询提取的表。我可以使用SELECT distinct name, year FROM tbl_name;来查找每年的唯一名称,但是我试图在SELECT查询期间添加一列,以识别或计算该名称每年的唯一出现次数。

预期:

| ID | Name | Month | Quarter | Year | Unique Count |
| 1  | A    | Jan   |  1      | 2019 |      1       |
| 1  | A    | Feb   |  1      | 2019 |      0       |
| 2  | B    | May   |  2      | 2019 |      1       |
| 3  | C    | May   |  2      | 2018 |      1       |

我尝试拆分为两个查询-一个选择所有内容;另一个选择只是截然不同,然后将它们合并在一起,但这会引入重复项。有没有一种方法可以使用SQL?

mysql sql
1个回答
0
投票

如果您正在运行MySQL 8.0,则可以使用row_number()name中标记year的外观:

select
    t.*,
    (row_number() over(partition by name, year order by quarter, month) = 1) unique_count
from mytable t

Demo on DB Fiddle

ID |姓名|月|季度|年份| unique_count-:| :--- | :---- | ------:| ---: -----------:1 | A | 2月| 1 | 2019 | 1个1 | A |一月| 1 | 2019 | 02 | B |五月2 | 2019 | 1个3 | C |五月2 | 2018 | 1个
© www.soinside.com 2019 - 2024. All rights reserved.