From c1e06d9e66afb113f3619cce91428c6f01b20f4a Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Wed, 27 Nov 2024 11:07:18 +0000 Subject: [PATCH] Add livebook for database queries --- music_library.livemd | 61 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 music_library.livemd diff --git a/music_library.livemd b/music_library.livemd new file mode 100644 index 00000000..bdb85ed8 --- /dev/null +++ b/music_library.livemd @@ -0,0 +1,61 @@ +# Music Library + +```elixir +Mix.install([ + {:kino_db, "~> 0.2.10"}, + {:exqlite, "~> 0.23.0"} +]) +``` + +## Setup + + + +```elixir +opts = [ + database: "/Users/cloud/github.com/cloud8421/music_library/data/music_library_dev.db" +] + +{:ok, conn} = Kino.start_child({Exqlite, opts}) +``` + +## Aggregates + +### Count of records per artist + + + +```elixir +result = + Exqlite.query!( + conn, + ~S""" + select json_extract(artist.value, '$.name') as name, count(1) as c + from records, json_each(records.artists) artist + group by name + order by c desc + ; + """, + [] + ) +``` + +### Count of records by genre + + + +```elixir +result2 = + Exqlite.query!( + conn, + ~S""" + select genre.value, count(genre.value) as c + from records, json_each(records.genres) genre + group by genre.value + order by c desc + ; + + """, + [] + ) +```