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'
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;
![]() |
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();
- 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;
- SELECT DISTINCT tx_sign FROM wspr.rx WHERE rx_sign='EA5JTT' AND time > CURDATE() AND time < NOW() ORDER BY HOUR(time);
- 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;
- 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;
- SELECT band, COUNT(*) FROM wspr.rx WHERE rx_sign='EA5JTT' AND time > '2025-05-27' AND time < '2025-06-29' GROUP BY band;
- 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;
- 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;
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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 total) ORDER BY band = 'TOTAL' DESC, Total DESC;
No hay comentarios:
Publicar un comentario