Consultas personalizadas de WSPRnet: RX

Ver: Consultas personalizadas de WSPRnet: TX 


Vamos a ver ahora diversas consultas SQL de la BD WSPRnet desde el punto de vista de la recepción


Si se quiere conocer el numero total de estaciones WSPR RX (rx-sign) que han recibido spots o beacons en un día en concreto podemos hacer la siguiente consulta:

  • SELECT  COUNT(DISTINCT rx_sign) FROM wspr.rx WHERE  time > '2025-06-26' AND time < '2025-06-27' 
El día 26-6-2025 hubo 1.470 estaciones WSPR RX. 

Para un intercalo de tiempo menor, por ejemplo 5' podemos usar 

  • SELECT  COUNT(DISTINCT rx_sign) FROM wspr.rx WHERE  time > '2025-06-27 00:00.00' AND time < '2025-06-27 00:05:00'
En los 5 primero minutos del dia 27-6-2025 vemos que hay casi 700 estaciones WSPR RX (Si se consultan 5' que incluye 2 tramas en otro momento de dia se conserva el valor), si vemos la totalidad del día el resultado es de 1.470, por lo que podemos pensar que el 50% de las estaciones son permanentes y el resto intermitentes o esporadicas


Lo mismo pero para el día en el que estamos hasta el momento de la consulta

  • SELECT  COUNT(DISTINCT rx_sign) FROM wspr.rx WHERE  time > CURDATE() AND time < NOW()


Si se quiere conocer cuantas estaciones han estado recibiendo en  EA(España) en lo que va de jornada usaríamos la siguiente consulta:

  • SELECT rx_sign, COUNT(*) FROM wspr.rx WHERE rx_sign LIKE 'EA%' AND time > CURDATE() AND time < NOW() GROUP BY rx_sign ORDER BY COUNT(*) DESC; 

El numero de WSPR RX en España es escaso y hay distritos que o no tienen o su presencia es testimonial para la superficie que ocupan

También podemos preguntar sobre el número de spots que recibe cada WSPR RX para un intervalo de fechas o tiempos, al estar ordenado si sabe también la posición que se ocupa por el numero de spots recibidos:

  • SELECT rx_sign, COUNT(*) FROM wspr.rx WHERE  time > '2025-06-17' AND time < '2025-06-18' GROUP BY rx_sign ORDER BY  COUNT(*) DESC;

El número de estaciones WSPR RX que reciben spots  en un día como el 13/6/2025 fue de 1.512, la media es de 2.356spots/estación con un máximo de 44.330.

Hay unas 4 veces más de estaciones WSPR TX que de WSPR RX.

Si queremos saber los que se han recibido en lo que llevamos de día

  • SELECT rx_sign, COUNT(*) FROM wspr.rx WHERE  time > CURDATE() AND time < NOW() GROUP BY rx_sign ORDER BY  COUNT(*) DESC;

Si queremos saber únicamente los que ha recibido una estación en concreto en lo que va de día podemos hacer:

  • SELECT COUNT(*) FROM wspr.rx WHERE rx_sign='EA5JTT' AND time > CURDATE() AND time < NOW();

Si se quiere es ver los registros completos (SELECT *) de un intervalo, por ejemplo desde las 20h00 a las 21h00 se puede usar

  • SELECT * FROM wspr.rx WHERE rx_sign='EA5JTT' AND time > '2025-06-27 20:00:00' AND time < '2025-06-27 21:00:00' ORDER BY time;

El listado anterior ordenado por tiempo y descartando duplicados, para el día de hoy hasta ahora quedaría de la siguiente manera:
  • SELECT DISTINCT tx_sign FROM wspr.rx WHERE rx_sign='EA5JTT' AND time > CURDATE() AND time < NOW() ORDER BY HOUR(time);
El listado de  estaciones transmisoras únicas con el numero de spots emitidos por cada una que ha recibido la WSPR RX (EA5JTT)
  • SELECT DISTINCT tx_sign,  COUNT(tx_sign) FROM wspr.rx WHERE rx_sign='EA5JTT' AND time > '2025-06-27 00:00:00' AND time < '2025-06-28 23:59:59' GROUP BY tx_sign HAVING COUNT(tx_sign) > 1 ORDER BY COUNT(tx_sign)  DESC;


Estaciones receptoras  de WSPR en una cuadricula determinada (Con 4 caracteres estan las que transmiten con 4 caracteres y las de que transmiten con 6)
  • SELECT rx_loc, COUNT(*) FROM wspr.rx WHERE rx_loc LIKE 'IM99%' AND time > '2025-06-13' AND time < '2025-06-25' GROUP BY rx_loc ORDER BY COUNT(*) DESC;
Si lo que se quiere son los subtotales por bandas (GROUP BY band) con indicación del valor de la misma entonces tenemos:
  • SELECT band, COUNT(*) FROM wspr.rx WHERE rx_sign='EA5JTT' AND time > '2025-05-27' AND time < '2025-06-29' GROUP BY band;
Detalle de los spots recibidos por una estación WSPR RX en un intervalo de tiempo agrupado por bandas y por dias
  • SELECT  toString(DATE(time)) AS fecha, COUNT(CASE WHEN band = '3'  THEN 1 END)  AS band_3, COUNT(CASE WHEN band = '7'  THEN 1 END)  AS band_7, COUNT(CASE WHEN band = '10' THEN 1 END) AS band_10, COUNT(CASE WHEN band = '14' THEN 1 END) AS band_14, COUNT(CASE WHEN band = '18' THEN 1 END) AS band_18, COUNT(CASE WHEN band = '21' THEN 1 END) AS band_21, COUNT(CASE WHEN band = '24' THEN 1 END) AS band_24, COUNT(CASE WHEN band = '28' THEN 1 END) AS band_28, COUNT(CASE WHEN band <> '99' THEN 1 END) AS total FROM wspr.rx WHERE  rx_sign = 'EA5JTT' AND time >= '2025-06-26' AND time <  NOW() GROUP BY DATE(time) UNION ALL SELECT  'TOTAL' AS fecha, COUNT(CASE WHEN band = '3'  THEN 1 END),  COUNT(CASE WHEN band = '7'  THEN 1 END), COUNT(CASE WHEN band = '10' THEN 1 END), COUNT(CASE WHEN band = '14' THEN 1 END), COUNT(CASE WHEN band = '18' THEN 1 END), COUNT(CASE WHEN band = '21' THEN 1 END), COUNT(CASE WHEN band = '24' THEN 1 END), COUNT(CASE WHEN band = '28' THEN 1 END), COUNT(CASE WHEN band <> '99' THEN 1 END) FROM wspr.rx WHERE    rx_sign = 'EA5JTT'  AND time >= '2025-06-26' AND time <  NOW() ORDER BY fecha;


Distribución por horas y bandas de los spots recibidos por EA5JTT en todas las bandas ordenado por horas y bandas
  • SELECT  HOUR(time), band, COUNT(*) FROM wspr.rx WHERE rx_sign='EA5JTT' AND time > '2025-05-27' AND time < '2025-06-28' GROUP BY HOUR(time), band ORDER BY HOUR(time), band;
Distribución por horas y bandas
  • SELECT HOUR(time) AS hora, COUNT(CASE WHEN band = '3' THEN 1 END)  AS 80m, COUNT(CASE WHEN band = '7' THEN 1 END)  AS 40m, COUNT(CASE WHEN band = '10' THEN 1 END) AS 30m, COUNT(CASE WHEN band = '14' THEN 1 END) AS 20m, COUNT(CASE WHEN band = '18' THEN 1 END) AS 17m, COUNT(CASE WHEN band = '21' THEN 1 END) AS 15m, COUNT(CASE WHEN band = '24' THEN 1 END) AS 12m, COUNT(CASE WHEN band = '28' THEN 1 END) AS 10m, COUNT(CASE WHEN band <> '99' THEN 1 END) AS TOTAL FROM wspr.rx WHERE rx_sign = 'EA5JTT' AND time > '2025-06-27' AND time <  '2025-06-28' GROUP BY HOUR(time) ORDER BY HOUR(time);

Distribución por minutos en un día. En este ejemplo se observa el patron de emisión coordinado del proyecto International WSPR Project
  • SELECT MINUTE(time) AS Minutos, COUNT(CASE WHEN band = '3' THEN 1 END)  AS 80m, COUNT(CASE WHEN band = '7' THEN 1 END)  AS 40m, COUNT(CASE WHEN band = '10' THEN 1 END) AS 30m, COUNT(CASE WHEN band = '14' THEN 1 END) AS 20m, COUNT(CASE WHEN band = '18' THEN 1 END) AS 17m, COUNT(CASE WHEN band = '21' THEN 1 END) AS 15m, COUNT(CASE WHEN band = '24' THEN 1 END) AS 12m, COUNT(CASE WHEN band = '28' THEN 1 END) AS 10m, COUNT(CASE WHEN band <> '99' THEN 1 END) AS TOTAL FROM wspr.rx WHERE rx_sign = 'EA5JTT' AND time > '2025-06-27 00:00:00' AND time <  '2025-06-28 00:00:00' GROUP BY MINUTE(time) ORDER BY MINUTE(time);


Vamos a hora a obtener las distancias máximas TX-RX para un dia concreto 27-6-2025, por horas y bandas (Recuerde que una gráfica, por ejemplo con EXCEL o una hoja de cálculo similar los datos se ven mejor)
  • SELECT HOUR(time) AS hora, MAX(CASE WHEN band = '3' THEN distance END) AS "80m", MAX(CASE WHEN band = '7' THEN distance END) AS "40m", MAX(CASE WHEN band = '10' THEN distance END) AS "30m",  MAX(CASE WHEN band = '14' THEN distance END) AS "20m", MAX(CASE WHEN band = '18' THEN distance END) AS "17m", MAX(CASE WHEN band = '21' THEN distance END) AS "15m", MAX(CASE WHEN band = '24' THEN distance END) AS "12m",  MAX(CASE WHEN band = '28' THEN distance END) AS "10m" FROM  wspr.rx WHERE  rx_sign = 'EA5JTT'  AND time >= '2025-06-27'   AND time < '2025-06-28' GROUP BY  HOUR(time) ORDER BY   HOUR(time);
Puede ser interesante conocer las mínimas potencias recibidas para un dia concreto 27-6-2025, por horas y bandas.
  • SELECT HOUR(time) AS hora, MIN(CASE WHEN band = '3' THEN power END) AS "80m", MIN(CASE WHEN band = '7' THEN power END) AS "40m", MIN(CASE WHEN band = '10' THEN power END) AS "30m",  MIN(CASE WHEN band = '14' THEN power END) AS "20m", MIN(CASE WHEN band = '18' THEN power END) AS "17m", MIN(CASE WHEN band = '21' THEN power END) AS "15m", MIN(CASE WHEN band = '24' THEN power END) AS "12m",  MIN(CASE WHEN band = '28' THEN power END) AS "10m" FROM  wspr.rx WHERE  rx_sign = 'EA5JTT'  AND time >= '2025-06-27'   AND time < '2025-06-29' GROUP BY  HOUR(time) ORDER BY  HOUR(time);

También puede interesarnos las mínimas o máximas S/N medidas para un día concreto 28-6-2025, por horas y bandas.
  • SELECT HOUR(time) AS hora, MIN(CASE WHEN band = '3' THEN snr END) AS "80m", MIN(CASE WHEN band = '7' THEN snr END) AS "40m", MIN(CASE WHEN band = '10' THEN snr END) AS "30m",  MIN(CASE WHEN band = '14' THEN snr END) AS "20m", MIN(CASE WHEN band = '18' THEN snr END) AS "17m", MIN(CASE WHEN band = '21' THEN snr END) AS "15m", MIN(CASE WHEN band = '24' THEN snr END) AS "12m",  MIN(CASE WHEN band = '28' THEN snr END) AS "10m" FROM  wspr.rx WHERE  rx_sign = 'EA5JTT'  AND time >= '2025-06-28'   AND time < '2025-06-29' GROUP BY  HOUR(time) ORDER BY  HOUR(time);
  • SELECT HOUR(time) AS hora, MAX(CASE WHEN band = '3' THEN snr END) AS "80m", MAX(CASE WHEN band = '7' THEN snr END) AS "40m", MAX(CASE WHEN band = '10' THEN snr END) AS "30m",  MAX(CASE WHEN band = '14' THEN snr END) AS "20m", MAX(CASE WHEN band = '18' THEN snr END) AS "17m", MAX(CASE WHEN band = '21' THEN snr END) AS "15m", MAX(CASE WHEN band = '24' THEN snr END) AS "12m",  MAX(CASE WHEN band = '28' THEN snr END) AS "10m" FROM  wspr.rx WHERE  rx_sign = 'EA5JTT'  AND time >= '2025-06-28'   AND time < '2025-06-29' GROUP BY  HOUR(time) ORDER BY  HOUR(time);

También el promedio redondeado a 1 decimal
  • SELECT HOUR(time) AS hora, ROUND(AVG(CASE WHEN band = '3' THEN snr END),1) AS "80m", ROUND(AVG(CASE WHEN band = '7' THEN snr END),1) AS "40m", ROUND(AVG(CASE WHEN band = '10' THEN snr END),1) AS "30m",  ROUND(AVG(CASE WHEN band = '14' THEN snr END),1) AS "20m", ROUND(AVG(CASE WHEN band = '18' THEN snr END),1) AS "17m", ROUND(AVG(CASE WHEN band = '21' THEN snr END),1) AS "15m", ROUND(AVG(CASE WHEN band = '24' THEN snr END),1) AS "12m", ROUND(AVG(CASE WHEN band = '28' THEN snr END),1) AS "10m" FROM  wspr.rx WHERE  rx_sign = 'EA5JTT'  AND time >= '2025-06-28' AND time < '2025-06-29' GROUP BY  HOUR(time) ORDER BY  HOUR(time);

Valor absoluto de recepciones por banda para una estación en concreto y su porcentaje sobre el total

  • SELECT * FROM ( SELECT  CAST(band AS String) AS band,  COUNT(*) AS Total,    ROUND(COUNT(*) / any(total.total_count) * 100, 2) AS Porcentaje FROM     wspr.rx JOIN ( SELECT COUNT(*) AS total_count   FROM wspr.rx      WHERE  rx_sign = 'EA5JTT' AND time > '2025-06-28 16:30:00' AND        time < '2025-06-29 16:30:00' AND band != '99'  ) AS total ON 1=1 WHERE     rx_sign = 'EA5JTT' AND time > '2025-06-28 16:30:00' AND time < '2025-06-29 16:30:00' AND band != '99' GROUP BY band UNION ALL SELECT  'TOTAL' AS band,  total_count AS Total, 100 AS Porcentaje FROM ( SELECT COUNT(*) AS total_count   FROM wspr.rx    WHERE rx_sign = 'EA5JTT' AND time > '2025-06-28 16:30:00' AND time < '2025-06-29 16:30:00' AND band != '99' ) AS totalORDER BY band = 'TOTAL' DESC, Total DESC;

Con todos estos ejemplos tanto para WSPR TX como para RX tiene material para escribir sus propias consultas.

No hay comentarios:

Publicar un comentario

OpenWSPR Receiver: III - Mejoras

Ver: OpenWSPR Receiver: I - Primeros pasos OpenWSPR Receiver: II - Resultados AMPLIFICADOR DE RF - LNA YouLoop Magnetic Antenna Pleamplifier...