2015-07-09 3 views
0

Предположим, что мы имеем следующую структуру данных:граф повторяющихся строк в SQL

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; 
+0

Wich DBMS вы используете? – AndreDuarte

+0

похоже, что вы хотите 'мин (год) как год' как часть вашего выбора – xQbert

+0

@AndreDuarte Я использую базу данных MySQL. – Andrej

ответ

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; 

Min (год) возвращает самый ранний год для каждого спаривания s_cui и o_cui, сохраняя при этом счетчики. Я помещаю `круглый год, так как это reserved word in mySQL.

хотя я не вижу, как «спаривание» вступит в силу более каждой «группы»

Смежные вопросы