2015-06-22 2 views
1

Учитывая эту таблицуPostgreSQL: зерноуборочный графа и DISTINCT ON

| id | name | created_at     | 
| 1 | test | 2015-02-24 11:13:28.605968 | 
| 2 | other | 2015-02-24 13:04:56.968004 | 
| 3 | test | 2015-02-24 11:14:24.670765 | 
| 4 | test | 2015-02-24 11:15:05.293904 | 

И этот запрос, который возвращает только строки идентификатора 2 и идентификатор 4.

SELECT DISTINCT ON (documents.name) documents.* 
FROM "documents" 
ORDER BY documents.name, documents.created_at DESC 

Как я могу вернуть количество затронутых строк ? Что-то вроде

SELECT COUNT(DISTINCT ON (documents.name) documents.*) FROM "documents" 

ответ

3

Вы можете использовать внешний запрос:

SELECT COUNT(1) 
FROM (
    SELECT DISTINCT ON (name) * 
    FROM documents 
    ORDER BY name, created_at DESC 
    ) alias 
Смежные вопросы