J'ai récemment commencé à utiliser postgres et je viens d'un environnement Oracle. Juste curieux de savoir si la requête que j'ai écrite peut être mieux implémentée dans postgres.scinde un enregistrement en plusieurs enregistrements en fonction de la catégorie de programmes regardée
Problème Détails:
J'ai deux tables:
- usage_detail
- Program_info
Usage_detail contient des informations sur tous les utilisateurs à regarder un canal. Par exemple l'utilisateur A a sa durée de la session pendant 1 heure 10 minutes 0 secondes, à partir de 13h15 aujourd'hui
User start_time end_time
A 2016-10-31 13:15:00 2016-10-31 14:25:00
Table Program_info contient prévue détail du programme et la catégorie correspondante.
Par exemple:
Program_id program_category week_day start_time end_time
1 News Monday 13:00 13:30
2 Sports Monday 13:30 14:30
La sortie Je cherche est:
User program_category start_time duration (in seconds)
A News 2016-10-31 13:15:00 900
A Sports 2016-10-31 13:30:00 3300
Mon approche actuelle:
Je partageais la durée de start_time et end_time dans l'intervalle de 30 minutes (car la catégorie de programme peut changer toutes les 30 minutes). Comme pour l'exemple que j'ai mentionné, j'ai d'abord créé 3 enregistrements (de 13h15 à 13h30, de 13h30 à 14h00, de 14h00 à 14h25) puis additionné la durée en fonction de la catégorie_programme .
J'ai écrit un code un peu moins lisible, qui génère dynamiquement plusieurs enregistrements sur un enregistrement sans utiliser la fonctionnalité array et unnest de postgres. Quelqu'un peut-il suggérer quelle pourrait être la meilleure façon d'aborder ce problème en utilisant Array/unnest ou toute autre fonctionnalité disponible dans postgres? Je ne cherche pas le code exact, juste la direction ferait.
Dans ma partie du monde, le 31/10/2016 est un lundi pas un dimanche. –
Je l'ai réalisé un peu plus tard, va éditer. Son temps de Diwali en Inde, les vacances sont sur, se sentait comme dimanche. : D – KSN