diff --git a/stats.py b/stats.py
index 8ef31660c07b1e13c41454b9ee5a716a23fbfa1c..cd3f5b617257db9649f3136f7eacb903ae4cb735 100644
--- a/stats.py
+++ b/stats.py
@@ -4,10 +4,11 @@ from jobs import date_json_handler
 from hashlib import md5
 
 @app.route('/internal/stats')
+@app.route('/internal/stats/<semester>')
 @register_navbar('Statistiken', icon='stats')
 @mod_required
-def stats():
-	return render_template('stats.html')
+def stats(semester=None):
+	return render_template('stats.html',semester=semester)
 
 statsqueries = {}
 statsqueries['formats_views'] = "SELECT formats.description AS labels, count(DISTINCT log.id) AS `values` FROM log JOIN videos ON (videos.id = log.video) JOIN formats ON (formats.id = videos.video_format) GROUP BY formats.id"
@@ -18,6 +19,7 @@ statsqueries['organizer_courses'] = "SELECT courses.organizer AS labels, count(c
 statsqueries['categories_lectures'] = "SELECT courses.subject AS labels, count(lectures.id) AS `values` FROM lectures JOIN courses ON (courses.id = lectures.course_id) WHERE lectures.visible GROUP BY courses.subject ORDER BY `values` DESC LIMIT 100"
 statsqueries['lecture_views'] = "SELECT lectures.time AS x, count(DISTINCT log.id) AS y FROM log JOIN videos ON (videos.id = log.video) JOIN lectures ON (lectures.id = videos.lecture_id) WHERE (lectures.course_id = ?) GROUP BY lectures.id ORDER BY lectures.time"
 statsqueries['live_views'] = "SELECT hlslog.segment AS x, COUNT(DISTINCT hlslog.id) AS y FROM hlslog WHERE hlslog.lecture = ? GROUP BY hlslog.segment ORDER BY hlslog.segment"
+statsqueries['lecture_totalviews'] = "SELECT 42"
 
 def plotly_date_handler(obj):
 	return obj.strftime("%Y-%m-%d %H:%M:%S")
@@ -45,10 +47,52 @@ def stats_viewsperday(req, param=""):
 	query_expr = 'SELECT date, trace, value AS y FROM logcache WHERE req = "%s" AND param = ? UNION SELECT * FROM (%s) AS cachetmp'
 	date_subexpr = 'SELECT CASE WHEN MAX(date) IS NULL THEN "2000-00-00" ELSE MAX(date) END AS t FROM `logcache` WHERE req = "%s" AND param = ?'
 	queries = {
-		'lecture': 'SELECT log.date AS date, formats.description AS trace, COUNT(DISTINCT log.id) AS y FROM log JOIN videos ON videos.id = log.video JOIN formats ON formats.id = videos.video_format WHERE log.date > %T AND videos.lecture_id = ? GROUP BY log.date, videos.video_format UNION SELECT log.date AS date, "total" AS trace, COUNT(DISTINCT log.id) AS y FROM log JOIN videos ON videos.id = log.video WHERE log.date > %T AND videos.lecture_id = ? GROUP BY log.date',
-		'course': 'SELECT log.date AS date, formats.description AS trace, COUNT(DISTINCT log.id) AS y FROM log JOIN videos ON videos.id = log.video JOIN lectures ON lectures.id = videos.lecture_id JOIN formats ON formats.id = videos.video_format WHERE log.date > %T AND lectures.course_id = ? GROUP BY log.date, videos.video_format UNION SELECT log.date AS date, "total" AS trace, COUNT(DISTINCT log.id) AS y FROM log JOIN videos ON videos.id = log.video JOIN lectures ON lectures.id = videos.lecture_id WHERE log.date > %T AND lectures.course_id = ? GROUP BY log.date',
-		'global': 'SELECT log.date AS date, formats.description AS trace, COUNT(DISTINCT log.id) AS y FROM log JOIN videos ON videos.id = log.video JOIN formats ON formats.id = videos.video_format WHERE log.date > %T GROUP BY log.date, videos.video_format UNION SELECT log.date AS date, "total" AS trace, COUNT(DISTINCT log.id) AS y FROM log WHERE log.date > %T GROUP BY log.date',
-		'courses': 'SELECT log.date AS date, courses.handle AS trace, COUNT(DISTINCT log.id) AS y FROM log JOIN videos ON videos.id = log.video JOIN lectures ON lectures.id = videos.lecture_id JOIN courses ON courses.id = lectures.course_id WHERE log.date > %T GROUP BY log.date, courses.id'
+		'lecture': # views per day per lecture (split per format)
+			'''SELECT log.date AS date, formats.description AS trace, COUNT(DISTINCT log.id) AS y
+			FROM log
+			JOIN videos ON videos.id = log.video
+			JOIN formats ON formats.id = videos.video_format
+			WHERE log.date > %T AND videos.lecture_id = ?
+			GROUP BY log.date, videos.video_format
+			UNION
+				SELECT log.date AS date, "total" AS trace, COUNT(DISTINCT log.id) AS y
+				FROM log JOIN videos ON videos.id = log.video
+				WHERE log.date > %T AND videos.lecture_id = ? GROUP BY log.date''',
+
+		'course': # views per day per format for a single course
+			'''SELECT log.date AS date, formats.description AS trace, COUNT(DISTINCT log.id) AS y
+			FROM log JOIN videos ON videos.id = log.video
+			JOIN lectures ON lectures.id = videos.lecture_id
+			JOIN formats ON formats.id = videos.video_format
+			WHERE log.date > %T AND lectures.course_id = ?
+			GROUP BY log.date, videos.video_format
+			UNION
+				SELECT log.date AS date, "total" AS trace, COUNT(DISTINCT log.id) AS y
+				FROM log
+				JOIN videos ON videos.id = log.video
+				JOIN lectures ON lectures.id = videos.lecture_id
+				WHERE log.date > %T AND lectures.course_id = ?
+				GROUP BY log.date''',
+
+		'global': # views per format per day (split per format)
+			'''SELECT log.date AS date, formats.description AS trace, COUNT(DISTINCT log.id) AS y
+			FROM log
+			JOIN videos ON videos.id = log.video
+			JOIN formats ON formats.id = videos.video_format
+			WHERE log.date > %T GROUP BY log.date, videos.video_format
+			UNION
+				SELECT log.date AS date, "total" AS trace, COUNT(DISTINCT log.id) AS y
+				FROM log
+				WHERE log.date > %T
+				GROUP BY log.date''',
+
+		'courses': # views per course per day
+			'''SELECT log.date AS date, courses.handle AS trace, COUNT(DISTINCT log.id) AS y
+			FROM log JOIN videos ON videos.id = log.video
+			JOIN lectures ON lectures.id = videos.lecture_id
+			JOIN courses ON courses.id = lectures.course_id
+			WHERE log.date > %T
+			GROUP BY log.date, courses.id'''
 	}
 	expr = queries[req].replace('%T', '"'+query(date_subexpr%('viewsperday.'+req), param)[0]['t']+'"')
 	params = [param]*expr.count('?')