Posted to tcl by mjanssen at Fri Jul 23 09:35:24 GMT 2021view pretty

set grades {Peter	B
Celine	A-
Zsófia	B+
João	F
Maryam	B+
Àñ	B-
Finn	D+
Aarav	A
Emma	F
Omar	B}

package require sqlite3

sqlite3 db :memory:
db eval {CREATE TABLE grades(name TEXT PRIMARY KEY, grade TEXT, naked_grade TEXT)}

foreach {name grade} $grades {
    if {![regexp {[A-F][+-]?} $grade]} {
        puts "Can't parse pair '$name $grade'"
        exit 1
    db eval {INSERT INTO grades VALUES ($name, $grade, trim($grade, '+-') )}

puts "Zsófia's grade: [db eval {SELECT grade FROM grades WHERE name='Zsófia'}]"

puts "List of students with a failing grade:"
puts "  [join [
    db eval {SELECT name FROM grades WHERE grade >= 'E' ORDER BY grade}
] {, }]"

db eval {select naked_grade, count(*) from grades group by naked_grade}