Skip to main content

This project generates SQL assignments based on common mistakes made by learners.

Project description

sql-assignment-generation

Automated generation of SQL assignments based on misconceptions.

Misconceptions - To Do List

Misconceptions are based on Taipalus' error categorization.

Syntax errors

Ambiguous Database Object

  1. SYN_1_AMBIGUOUS_DATABASE_OBJECT_OMITTING_CORRELATION_NAMES
  2. SYN_1_AMBIGUOUS_DATABASE_OBJECT_AMBIGUOUS_COLUMN
  3. SYN_1_AMBIGUOUS_DATABASE_OBJECT_AMBIGUOUS_FUNCTION

Undefined Database Object

  1. SYN_2_UNDEFINED_DATABASE_OBJECT_UNDEFINED_COLUMN
  2. SYN_2_UNDEFINED_DATABASE_OBJECT_UNDEFINED_FUNCTION
  3. SYN_2_UNDEFINED_DATABASE_OBJECT_UNDEFINED_PARAMETER
  4. SYN_2_UNDEFINED_DATABASE_OBJECT_UNDEFINED_OBJECT
  5. SYN_2_UNDEFINED_DATABASE_OBJECT_INVALID_SCHEMA_NAME
  6. SYN_2_UNDEFINED_DATABASE_OBJECT_MISSPELLINGS
  7. SYN_2_UNDEFINED_DATABASE_OBJECT_SYNONYMS
  8. SYN_2_UNDEFINED_DATABASE_OBJECT_OMITTING_QUOTES_AROUND_CHARACTER_DATA

Data Type Mismatch

  1. SYN_3_DATA_TYPE_MISMATCH_FAILURE_TO_SPECIFY_COLUMN_NAME_TWICE
  2. SYN_3_DATA_TYPE_MISMATCH

Illegal Aggregate Function Placement

  1. SYN_4_ILLEGAL_AGGREGATE_FUNCTION_PLACEMENT_USING_AGGREGATE_FUNCTION_OUTSIDE_SELECT_OR_HAVING
  2. SYN_4_ILLEGAL_AGGREGATE_FUNCTION_PLACEMENT_GROUPING_ERROR_AGGREGATE_FUNCTIONS_CANNOT_BE_NESTED

Illegal Or Insufficient Grouping

  1. SYN_5_ILLEGAL_OR_INSUFFICIENT_GROUPING_GROUPING_ERROR_EXTRANEOUS_OR_OMITTED_GROUPING_COLUMN
  2. SYN_5_ILLEGAL_OR_INSUFFICIENT_GROUPING_STRANGE_HAVING_HAVING_WITHOUT_GROUP_BY

Common Syntax Error

  1. SYN_6_COMMON_SYNTAX_ERROR_CONFUSING_FUNCTION_WITH_FUNCTION_PARAMETER
  2. SYN_6_COMMON_SYNTAX_ERROR_USING_WHERE_TWICE
  3. SYN_6_COMMON_SYNTAX_ERROR_OMITTING_THE_FROM_CLAUSE
  4. SYN_6_COMMON_SYNTAX_ERROR_COMPARISON_WITH_NULL
  5. SYN_6_COMMON_SYNTAX_ERROR_OMITTING_THE_SEMICOLON
  6. SYN_6_COMMON_SYNTAX_ERROR_DATE_TIME_FIELD_OVERFLOW
  7. SYN_6_COMMON_SYNTAX_ERROR_DUPLICATE_CLAUSE
  8. SYN_6_COMMON_SYNTAX_ERROR_USING_AN_UNDEFINED_CORRELATION_NAME
  9. SYN_6_COMMON_SYNTAX_ERROR_TOO_MANY_COLUMNS_IN_SUBQUERY
  10. SYN_6_COMMON_SYNTAX_ERROR_CONFUSING_TABLE_NAMES_WITH_COLUMN_NAMES
  11. SYN_6_COMMON_SYNTAX_ERROR_RESTRICTION_IN_SELECT_CLAUSE
  12. SYN_6_COMMON_SYNTAX_ERROR_PROJECTION_IN_WHERE_CLAUSE
  13. SYN_6_COMMON_SYNTAX_ERROR_CONFUSING_THE_ORDER_OF_KEYWORDS
  14. SYN_6_COMMON_SYNTAX_ERROR_CONFUSING_THE_LOGIC_OF_KEYWORDS
  15. SYN_6_COMMON_SYNTAX_ERROR_CONFUSING_THE_SYNTAX_OF_KEYWORDS
  16. SYN_6_COMMON_SYNTAX_ERROR_OMITTING_COMMAS
  17. SYN_6_COMMON_SYNTAX_ERROR_CURLY_SQUARE_OR_UNMATCHED_BRACKETS
  18. SYN_6_COMMON_SYNTAX_ERROR_IS_WHERE_NOT_APPLICABLE
  19. SYN_6_COMMON_SYNTAX_ERROR_NONSTANDARD_KEYWORDS_OR_STANDARD_KEYWORDS_IN_WRONG_CONTEXT
  20. SYN_6_COMMON_SYNTAX_ERROR_NONSTANDARD_OPERATORS
  21. SYN_6_COMMON_SYNTAX_ERROR_ADDITIONAL_SEMICOLON

Semantic Errors

Inconsistent Expression

  1. SEM_1_INCONSISTENT_EXPRESSION_AND_INSTEAD_OF_OR
  2. SEM_1_INCONSISTENT_EXPRESSION_TAUTOLOGICAL_OR_INCONSISTENT_EXPRESSION
  3. SEM_1_INCONSISTENT_EXPRESSION_DISTINCT_IN_SUM_OR_AVG
  4. SEM_1_INCONSISTENT_EXPRESSION_DISTINCT_THAT_MIGHT_REMOVE_IMPORTANT_DUPLICATES
  5. SEM_1_INCONSISTENT_EXPRESSION_WILDCARDS_WITHOUT_LIKE
  6. SEM_1_INCONSISTENT_EXPRESSION_INCORRECT_WILDCARD_USING_UNDERSCORE_INSTEAD_OF_PERCENT
  7. SEM_1_INCONSISTENT_EXPRESSION_MIXING_A_GREATER_THAN_0_WITH_IS_NOT_NULL

Inconsistent Join

  1. SEM_2_INCONSISTENT_JOIN_NULL_IN_IN_ANY_ALL_SUBQUERY
  2. SEM_2_INCONSISTENT_JOIN_JOIN_ON_INCORRECT_COLUMN

Missing Join

  1. SEM_3_MISSING_JOIN_OMITTING_A_JOIN

Duplicate Rows

  1. SEM_4_DUPLICATE_ROWS_MANY_DUPLICATES

Redundant Column Output

  1. SEM_5_REDUNDANT_COLUMN_OUTPUT_CONSTANT_COLUMN_OUTPUT
  2. SEM_5_REDUNDANT_COLUMN_OUTPUT_DUPLICATE_COLUMN_OUTPUT

Logical Errors

Operator Error

  1. LOG_1_OPERATOR_ERROR_OR_INSTEAD_OF_AND
  2. LOG_1_OPERATOR_ERROR_EXTRANEOUS_NOT_OPERATOR
  3. LOG_1_OPERATOR_ERROR_MISSING_NOT_OPERATOR
  4. LOG_1_OPERATOR_ERROR_SUBSTITUTING_EXISTENCE_NEGATION_WITH_NOT_EQUAL_TO
  5. LOG_1_OPERATOR_ERROR_PUTTING_NOT_IN_FRONT_OF_INCORRECT_IN_OR_EXISTS
  6. LOG_1_OPERATOR_ERROR_INCORRECT_COMPARISON_OPERATOR_OR_VALUE

Join Error

  1. LOG_2_JOIN_ERROR_JOIN_ON_INCORRECT_TABLE
  2. LOG_2_JOIN_ERROR_JOIN_WHEN_JOIN_NEEDS_TO_BE_OMITTED
  3. LOG_2_JOIN_ERROR_JOIN_ON_INCORRECT_COLUMN_MATCHES_POSSIBLE
  4. LOG_2_JOIN_ERROR_JOIN_WITH_INCORRECT_COMPARISON_OPERATOR
  5. LOG_2_JOIN_ERROR_MISSING_JOIN

Nesting Error

  1. LOG_3_NESTING_ERROR_IMPROPER_NESTING_OF_EXPRESSIONS
  2. LOG_3_NESTING_ERROR_IMPROPER_NESTING_OF_SUBQUERIES

Expression Error

  1. LOG_4_EXPRESSION_ERROR_EXTRANEOUS_QUOTES
  2. LOG_4_EXPRESSION_ERROR_MISSING_EXPRESSION
  3. LOG_4_EXPRESSION_ERROR_EXPRESSION_ON_INCORRECT_COLUMN
  4. LOG_4_EXPRESSION_ERROR_EXTRANEOUS_EXPRESSION
  5. LOG_4_EXPRESSION_ERROR_EXPRESSION_IN_INCORRECT_CLAUSE

Projection Error

  1. LOG_5_PROJECTION_ERROR_EXTRANEOUS_COLUMN_IN_SELECT
  2. LOG_5_PROJECTION_ERROR_MISSING_COLUMN_FROM_SELECT
  3. LOG_5_PROJECTION_ERROR_MISSING_DISTINCT_FROM_SELECT
  4. LOG_5_PROJECTION_ERROR_MISSING_AS_FROM_SELECT
  5. LOG_5_PROJECTION_ERROR_MISSING_COLUMN_FROM_ORDER_BY
  6. LOG_5_PROJECTION_ERROR_INCORRECT_COLUMN_IN_ORDER_BY
  7. LOG_5_PROJECTION_ERROR_EXTRANEOUS_ORDER_BY_CLAUSE
  8. LOG_5_PROJECTION_ERROR_INCORRECT_ORDERING_OF_ROWS

Function Error

  1. LOG_6_FUNCTION_ERROR_DISTINCT_AS_FUNCTION_PARAMETER_WHERE_NOT_APPLICABLE
  2. LOG_6_FUNCTION_ERROR_MISSING_DISTINCT_FROM_FUNCTION_PARAMETER
  3. LOG_6_FUNCTION_ERROR_INCORRECT_FUNCTION
  4. LOG_6_FUNCTION_ERROR_INCORRECT_COLUMN_AS_FUNCTION_PARAMETER

Complications

  1. COM_1_COMPLICATION_UNNECESSARY_COMPLICATION
  2. COM_1_COMPLICATION_UNNECESSARY_DISTINCT_IN_SELECT_CLAUSE
  3. COM_1_COMPLICATION_UNNECESSARY_JOIN
  4. COM_1_COMPLICATION_UNUSED_CORRELATION_NAME
  5. COM_1_COMPLICATION_CORRELATION_NAMES_ARE_ALWAYS_IDENTICAL
  6. COM_1_COMPLICATION_UNNECESSARILY_GENERAL_COMPARISON_OPERATOR
  7. COM_1_COMPLICATION_LIKE_WITHOUT_WILDCARDS
  8. COM_1_COMPLICATION_UNNECESSARILY_COMPLICATED_SELECT_IN_EXISTS_SUBQUERY
  9. COM_1_COMPLICATION_IN_EXISTS_CAN_BE_REPLACED_BY_COMPARISON
  10. COM_1_COMPLICATION_UNNECESSARY_AGGREGATE_FUNCTION
  11. COM_1_COMPLICATION_UNNECESSARY_DISTINCT_IN_AGGREGATE_FUNCTION
  12. COM_1_COMPLICATION_UNNECESSARY_ARGUMENT_OF_COUNT
  13. COM_1_COMPLICATION_UNNECESSARY_GROUP_BY_IN_EXISTS_SUBQUERY
  14. COM_1_COMPLICATION_GROUP_BY_WITH_SINGLETON_GROUPS
  15. COM_1_COMPLICATION_GROUP_BY_CAN_BE_REPLACED_WITH_DISTINCT
  16. COM_1_COMPLICATION_UNION_CAN_BE_REPLACED_BY_OR
  17. COM_1_COMPLICATION_UNNECESSARY_COLUMN_IN_ORDER_BY_CLAUSE
  18. COM_1_COMPLICATION_ORDER_BY_IN_SUBQUERY
  19. COM_1_COMPLICATION_INEFFICIENT_HAVING
  20. COM_1_COMPLICATION_INEFFICIENT_UNION
  21. COM_1_COMPLICATION_CONDITION_IN_SUBQUERY_CAN_BE_MOVED_UP
  22. COM_1_COMPLICATION_CONDITION_ON_LEFT_TABLE_IN_LEFT_OUTER_JOIN
  23. COM_1_COMPLICATION_OUTER_JOIN_CAN_BE_REPLACED_BY_INNER_JOIN
  24. COM_X_COMPLICATION_JOIN_CONDITION_IN_WHERE_CLAUSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sql_assignment_generator-0.0.2.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sql_assignment_generator-0.0.2-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file sql_assignment_generator-0.0.2.tar.gz.

File metadata

  • Download URL: sql_assignment_generator-0.0.2.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0rc1

File hashes

Hashes for sql_assignment_generator-0.0.2.tar.gz
Algorithm Hash digest
SHA256 248df989832bb1d6df2c22cf38d843da11f72d32f7fddef04d42302cf716241f
MD5 cefb7e0e5d486878fd636acda360ecd4
BLAKE2b-256 ec181862243021f8a4a296c9c7824a78a51663c1ec01996122b1dd1fd299c6f4

See more details on using hashes here.

File details

Details for the file sql_assignment_generator-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for sql_assignment_generator-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5b8d25740dcd5e2a08167920ac6ae8a5a7fed44187c5e8351974febed0e44e12
MD5 acbf5d1656f888af91df4284705e688d
BLAKE2b-256 71df0952b4534e42a4769f6be9af0e9d6f557b1531d06feec523ab6cb873ac4b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page