Я согласен с Йенсом Шаудером в том, что вы хотите позволить СУБД беспокоиться о фильтрации и подсчете, но я вынужден не согласиться с тем, что список таблиц хорош, поскольку то, что предлагает OP, не нормализовано. Это не маленькая проблема, поскольку она не позволит СУБД выполнять свою работу.
Кроме того, важно то, что идея состоит не в том, чтобы вести счет того, сколько раз воспроизводится дорожка, а в том, чтобы вести учет каждого воспроизведения дорожки. Разница в том, что вы хотите сохранить историю событий, а не сводку событий.
То, что вы хотите, это таблицы, которые больше похожи на это:
--- EVENTS ---
CREATE TABLE events (
id INTEGER PRIMARY KEY autoincrement,
event_name TEXT NOT NULL,
event_date TEXT NOT NULL,
);
--- ARTISTS ---
CREATE TABLE artists (
id INTEGER PRIMARY KEY autoincrement,
artist_name TEXT NOT NULL
);
--- TRACKS ---
CREATE TABLE tracks (
id INTEGER PRIMARY KEY autoincrement,
trackname TEXT NOT NULL,
artist_id INTEGER,
FOREIGN KEY(artist_id) REFERENCES artists(id)
);
--- PERFORMANCES ---
CREATE TABLE performances (
id INTEGER PRIMARY KEY autoincrement,
event_id INTEGER,
track_id INTEGER,
FOREIGN KEY (event_id) REFERENCES events(id),
FOREIGN KEY (track_id) REFERENCES tracks(id)
);
Эта структура таблицы находится в третьей нормальной форме (3NF), и ее будет легко писать и запрашивать.