Quiero ser capaz de crear un histograma de una tupla que contiene dos valores enteros.
El uso de postgresql.

Aquí es la consulta:

 SELECT temp.ad_id, temp.distance  as hits FROM ( 
 'UNION ALL .join(cupound_query)' # python
) as temp GROUP BY temp.ad_id,temp.distance 

EDITAR : el Mejor ejemplo de lo que quiero

Para esta entrada:

(51, 5)
(51, 0)
(51, 3)
(51, 0)
(88, 2)
(88, 2)
(88, 2)
(84, 1)
(81, 9)

Sería:

 (88,2) : 3
 (51,0) : 2
 (51,3) : 1
 (51,5) : 1
 (84,1) : 1
 (81,9) : 1

¿Cómo puedo crear un histograma de los valores ?
Dicho de otro modo, ¿cómo puedo contar cuántas veces
una fila tiene un duplicado ?

Gracias

¿Cómo se define el duplicado? Parece que el conjunto de datos actual no tiene duplicados, lo que la hace una mala muestra representativa para su pregunta. ¿Estás pensando en contar el número de éxitos en, digamos rangos de 50, como 400-450, 450-500, 500-550, etc? Si es así por favor aclarar.
duplicado en el sentido de, exactamente los mismos números en ambos lados. Sí, en la muestra que me dieron allí sería un COUNT = 1 para cada elemento

OriginalEl autor fabrizioM | 2011-11-14

3 Comentarios

  1. 13

    Tu pregunta deja espacio para la interpretación. Esta prueba muestra 2 anidada pasos:

    CREATE TEMP TABLE x (ad_id int, distance int);
    INSERT INTO x VALUES
     (510, 0),(956, 3),(823, 3),(880, 2)
    ,(523, 3),(467, 0),(843, 1),(816, 9)
    ,(533, 4),(721, 7),(288, 3),(900, 3)
    ,(526, 9),(750, 7),(302, 8),(463, 6)
    ,(742, 8),(804, 2),(62,  7),(880, 2)
    ,(523, 3),(467, 0),(843, 1),(816, 9)
    ,(533, 4),(721, 7),(288, 3),(900, 3)
    ,(526, 9),(750, 7),(302, 8),(816, 9)
    ,(533, 4),(721, 7),(288, 3),(900, 3)
    ,(533, 4),(721, 7),(288, 3),(396, 5);

    Cómo muchos duplicados por valor ?

    SELECT ad_id, count(*) AS ct FROM x GROUP BY 1;

    Resultado:

    ad_id  | ct
    -------+----
    62     | 1
    288    | 4
    302    | 2
    396    | 1
    ...

    Leer: ad_id 62 existe 1x, ad_id 288 existe 4 veces, …


    «¿Cómo puedo contar cuántas veces una fila tiene un duplicado?»

    SELECT ct
          ,COUNT (*) AS ct_ct
    FROM   (SELECT ad_id, COUNT (*) AS ct FROM x GROUP  BY 1) a
    GROUP BY 1
    ORDER BY 1;

    Resultado:

     ct | ct_ct
    ----+---
    1   | 8
    2   | 7
    3   | 2
    4   | 3

    De lectura: 8 repeticiones de «ad_id es único», 7 apariciones de «2 filas con el mismo ad_id«, …

    OriginalEl autor Erwin Brandstetter

  2. 2

    Acaba de agregar count(*) a sus seleccione:

    SELECT temp.ad_id, temp.distance as hits, count(*)
    ....

    OriginalEl autor Andomar

  3. -1

    A continuación es un tutorial que escribí sobre cómo generar histogramas directamente en SQL usando Postgres:

    Simple Histogramas en SQL

    Creo que se podría adaptar fácilmente este ejemplo a la estructura de la tabla.

    OriginalEl autor Jason Buberel

Dejar respuesta

Please enter your comment!
Please enter your name here