Outils pour utilisateurs

Outils du site


wiki:requetessql

Magie Noire En SQL

Il vous faut un accès en ligne de commande sur le NAS, et lancer MySQL avec mysql -A -u USER -pPASS Rivendell

Vous allez devoir adapter le nom des scheduler codes, machines, etc. Dans les requêtes ci-dessous :

  • le client rivendell s'appelle auto
  • le service s'appelle saison1234 (il faut parfois y ajouter un suffixe, par exemple sur la table saison1234_SRT)
  • le groupe des cartouches musicales est MUSIQUE
  • les scheduler codes sont en Mu, par exemple MuFR

Pour affiner les conditions, vous pouvez aussi utiliser les fonctions de date et heure de MariaDB.

Combien de morceaux/temps diffusés

Ici en Français, un 10 Février 2018 entre minuit et 18h. Retirez la ligne avec la condition MuFR pour avoir ces chiffres sur toute la musique, puis faites la division pour connaître votre score au quota francophone.

SELECT
    COUNT(l.ID) AS nbTitres,
    COUNT(DISTINCT l.CART_NUMBER) AS nbTitres_distincts,
    SUM(l.LENGTH)/3600000 AS heures
FROM saison1234_SRT l
JOIN CART c ON l.CART_NUMBER = c.NUMBER
WHERE
    `STATION_NAME`='auto' AND
    GROUP_NAME = 'MUSIC' AND
    c.SCHED_CODES LIKE '%MuFR%' AND
    '2018-02-10 00:00:00' <= `EVENT_DATETIME` AND `EVENT_DATETIME` <= '2018-02-10 17:59:00';

Pour sortir la même stat mais par jour, uniquement entre 6 et 18h :

SELECT
    COUNT(l.ID) AS nbTitres,
    COUNT(DISTINCT l.CART_NUMBER) AS nbTitres_distincts,
    SUM(l.LENGTH)/3600000 AS heures,
    DATE(`EVENT_DATETIME`)
FROM saison1234_SRT l
JOIN CART c ON l.CART_NUMBER = c.NUMBER
WHERE
    `STATION_NAME`='auto' AND
    c.GROUP_NAME = 'MUSIC' AND
    c.SCHED_CODES LIKE '%MuFR%' AND
    6 <= HOUR(`EVENT_DATETIME`) AND HOUR(`EVENT_DATETIME`) < 18
GROUP BY DATE(`EVENT_DATETIME`)

On peut aussi grouper par mois plutôt que par jour, et sortir juste la moyenne:

SELECT
    AVG(nbTitres_distincts) AS nbTitresDifferentsParMois
FROM(
SELECT
    COUNT(DISTINCT l.CART_NUMBER) AS nbTitres_distincts
FROM saison1234_SRT l
JOIN CART c ON l.CART_NUMBER = c.NUMBER
WHERE
    `STATION_NAME`='auto' AND
    c.GROUP_NAME = 'MUSIC' AND
    6 <= HOUR(`EVENT_DATETIME`) AND HOUR(`EVENT_DATETIME`) < 18
GROUP BY MONTH(`EVENT_DATETIME`)
) AS sub;

Ensuite allez vous gausser de passer 10x plus de titres différents que NRJ.

Nombre de musiques ajoutées depuis une date donnée

Pour savoir si les programmateurs font le taf ! Vous pouvez retirer la ligne avec la condition qui filtre par sched code.

SELECT COUNT(*) AS nbMusiquesAjoutees
FROM CART c
JOIN CUTS u ON u.CART_NUMBER=c.NUMBER
WHERE c.GROUP_NAME = 'MUSIC' AND
    c.SCHED_CODES LIKE '%MuFR%' AND
    u.ORIGIN_DATETIME >= '2017-09-01 00:00:00'
;

Exporter un fichier "playlist de l'année passée"

Si votre table SRT est reglée pour conserver toute l'année, bien sûr.

mysql -h HOST -p PASS -u USER Rivendell -e "SELECT `EVENT_DATETIME`,`CART_NUMBER`,`ARTIST`,`TITLE` FROM `saison1234_SRT` WHERE '2016-05-02 07:00:00' <= `EVENT_DATETIME` AND `EVENT_DATETIME` <= '2016-05-02 13:00:00' AND `STATION_NAME`='auto' ORDER BY EVENT_DATETIME ASC" > playlist_saison1234.txt

Rotation des nouveautés

Dans RDLibrary il est possible de sélectionner de nombreux carts (shift+click), puis de cliquer sur “Edit” et “Scheduler codes” pour ajouter/retirer un scheduler code à tous les carts sélectionnés.

Cela permet par exemple de retirer un code Recent sur des titres devenus anciens, en se basant sur le fait que les numéros de cart sont vaguement croissants dans le temps. Mais quel est le n° de cart limite ? Mais comment trouver quel est le plus grand n° de cart tel quel tous les carts inférieurs soient plus vieux de 3 mois ? La solution :

SELECT MAX(a.NUMBER), COUNT(a.NUMBER)
FROM CART a, CUTS u
WHERE u.CART_NUMBER=a.NUMBER
AND a.GROUP_NAME='MUSIC'
AND u.ORIGIN_DATETIME < TIMESTAMPADD(MONTH,-3,NOW());
wiki/requetessql.txt · Dernière modification: 2021/11/19 07:09 (modification externe)