TABLE WITHOUT ID
  date as "Date",
  workout as "Day",
  routine as "Routine",
  duration as "Duration (min)"
FROM "Fitness Things/Daily Logs"
SORT date DESC
LIMIT 10

This Week’s Workouts

TABLE WITHOUT ID
  date as "Date",
  workout as "Day",
  routine as "Routine"
FROM "Fitness Things/Daily Logs"
WHERE date >= date(today) - dur(7 days)
SORT date DESC

Workout Frequency by Routine

const workouts = dv.pages('"Fitness Things/Daily Logs"');
const routineCount = {};

for (let w of workouts) {
    if (w.routine) {
        const routineName = w.routine.path || w.routine;
        routineCount[routineName] = (routineCount[routineName] || 0) + 1;
    }
}

dv.table(["Routine", "Times Performed"], 
    Object.entries(routineCount)
        .sort((a, b) => b[1] - a[1])
        .map(([routine, count]) => [routine, count])
);

Most Frequently Used Exercises

const exercises = {};
const dailyLogs = dv.pages('"Fitness Things/Daily Logs"');

for (let log of dailyLogs) {
    for (let link of log.file.outlinks) {
        // Only count links to exercise files
        const linkedPage = dv.page(link);
        if (linkedPage && linkedPage.type === "exercise") {
            const exName = link.path;
            exercises[exName] = (exercises[exName] || 0) + 1;
        }
    }
}

dv.table(["Exercise", "Times Performed"], 
    Object.entries(exercises)
        .sort((a, b) => b[1] - a[1])
        .slice(0, 15)
        .map(([ex, count]) => [ex, count])
);

Total Workouts

LIST length(rows)
FROM "Fitness Things/Daily Logs"