样本表表名称:
| 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 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
ID |姓名|月|季度|年份| unique_count-:| :--- | :---- | ------:| ---: -----------:1 | A | 2月| 1 | 2019 | 1个1 | A |一月| 1 | 2019 | 02 | B |五月2 | 2019 | 1个3 | C |五月2 | 2018 | 1个