PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да подредите отделни кортежи в заявка на PostgreSQL

Най-левият ORDER BY елементите не могат да са в противоречие с елементите на DISTINCT клауза. Цитирам ръководството за DISTINCT :

Опитайте:

SELECT *
FROM  (
    SELECT DISTINCT ON (c.cluster_id, feed_id) 
           c.cluster_id, num_docs, feed_id, url_time 
    FROM   url_info u
    JOIN   cluster_info c ON (c.cluster_id = u.cluster_id) 
    WHERE  feed_id IN (SELECT pot_seeder FROM potentials) 
    AND    num_docs > 5
    AND    url_time > '2012-04-16'
    ORDER  BY c.cluster_id, feed_id, num_docs, url_time
           -- first columns match DISTINCT
           -- the rest to pick certain values for dupes
           -- or did you want to pick random values for dupes?
    ) x
ORDER  BY num_docs DESC;

Или използвайте ГРУПИРАНЕ ПО :

SELECT c.cluster_id
     , num_docs
     , feed_id
     , url_time 
FROM   url_info u
JOIN   cluster_info c ON (c.cluster_id = u.cluster_id) 
WHERE  feed_id IN (SELECT pot_seeder FROM potentials) 
AND    num_docs > 5
AND    url_time > '2012-04-16'
GROUP  BY c.cluster_id, feed_id 
ORDER  BY num_docs DESC;

Ако c.cluster_id, feed_id са колоните с първичен ключ на всички (в този случай и двете) таблици, от които включвате колони в SELECT списък, тогава това работи само с PostgreSQL 9.1 или по-късно.

В противен случай трябва да ГРУПИРАТЕ ПО останалите колони или обобщават, или предоставят повече информация.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разделя String и да го вмъкна като нов ред в същата таблица?

  2. Postgresql в базата данни на паметта django

  3. Как работят изгледите на PostgreSQL security_barrier?

  4. Как да извадите/добавите минути от клеймо за време в postgreSQL

  5. JPA родната заявка връща Double или BigDecimal