计算SQL中的重复行

时间:2015-07-09 17:45:30

标签: mysql

假设我们有以下数据结构:

s_cui   o_cui   year
D000001 D000001 1975
D000001 D000001 1976
D000001 D002413 1976
D000001 D002413 1979
D000001 D002413 1987
D000001 D004298 1976
D000002 D000002 1985
D000003 D000900 1975
D000003 D000900 1990
D000003 D004134 1983
D000003 D004134 1986

我需要计算重复对(在第1列和第2列中),并且每个这样的对分配第3列中的最低值。对于此示例,输出应为:

s_cui   o_cui   freq  year
D000001 D000001 2     1975
D000001 D002413 3     1976
D000001 D004298 1     1976
D000002 D000002 1     1985
D000003 D000900 2     1975
D000003 D004134 2     1983

我最初的尝试是在这里(没有year字段):

SELECT s_cui, o_cui, COUNT(*) FROM table GROUP BY s_cui, o_cui;

1 个答案:

答案 0 :(得分:1)

你关闭了!你只需要添加min(年)。

看起来你想要每个s_cui,o_cui和count的最早出现一年。

SELECT s_cui, o_cui, COUNT(*) freq, min(`year`) as `year`
FROM table 
GROUP BY s_cui, o_cui;

最小(年)将返回每个配对的s_cui和o_cui的最早年份,同时仍保留计数。我把它放在一年左右,因为它是reserved word in mySQL

虽然我不知道"配对"每个"组"更多地生效