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}