J'ai quelques données. 224 000 lignes, dans une base de données SQLite. Je veux en extraire des informations de séries temporelles pour alimenter un outil de visualisation de données. Essentiellement, chaque ligne de la base de données est un événement qui a (entre autres choses non strictement pertinentes) un groupe date-heure en secondes depuis l'époque et un nom qui en est responsable. Je veux extraire combien d'événements chaque nom a pour chaque semaine dans la DB.Table SQLite pivotante, setwise comme SQL doit être
C'est assez simple:
SELECT COUNT(*),
name,
strf("%W:%Y", time, "unixepoch")
FROM events
GROUP BY strf("%W:%Y", time, "unixepoch"), name
ORDER BY time
et nous obtenons environ six mille lignes de données.
count name week:year
23............ fudge.......23:2009
etc...
Mais je ne veux pas une ligne pour chaque nom de chaque semaine - je veux une ligne pour chaque nom, et une colonne pour chaque semaine, comme ceci:
Name 23:2009 24:2009 25:2009
fudge........23............6............19
fish.........1.............0............12
etc...
Maintenant, la Le processus de surveillance fonctionne depuis 69 semaines, et le nombre de noms uniques est 502. Donc, clairement, je suis loin d'être friand de toute solution qui implique le codage en dur de toutes les colonnes et encore moins des lignes. Je suis moins indifférent sur tout ce qui implique l'itération sur le terrain, disons avec executemany() de python, mais je suis prêt à l'accepter si nécessaire. SQL est censé être défini par les paramètres, bon sang.
@yorksranter: prévoyez-vous d'upvote et d'accepter une réponse? –
Je n'ai pas les 15 points de réputation. – user106514
@yorkstranter: C'est bon, si vous aimez vraiment le code, vous pouvez revisiter quand votre représentant est plus haut :-) –