Scythe is a programming-by-example system that aims to help end-users with database querying tasks. Given a pair of input-output table examples, Scythe synthesizes queries that turn input examples into the provided output example. (Demo)
Scythe is backed by a two-phase search algortihm: given the input-output example, the algorithm will first sketch query skeletons and then infer predicates in them. The two-phase synthesis search algorithm brings Scythe plenty of optimization opportunities to scale up for complex queries. For details, refer to the following papers.
Synthesizing more complex queries (e.g., queries with pivoting, window functions) for data analytic tasks remains a highly challenging task, we would love to collaborate with you to make Scythe better! Drop us a line!