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.1.tar.gz (16.5 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.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sql_assignment_generator-0.0.1.tar.gz
  • Upload date:
  • Size: 16.5 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.1.tar.gz
Algorithm Hash digest
SHA256 feb5dc38382250a959a63ad99e54520c6f311bdd343c03864516cd0efe657b18
MD5 dc0f0c0c9d96e0312e9ccd71e73a3daa
BLAKE2b-256 4e3349ca9c07782c95121b00ff6b1aabd800514297b8d0d59f7b992b6e5a6f4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sql_assignment_generator-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f216b2b9247567adca2cb38f04a4397a50f26f7f3ce2f2ae0f1bf8c088ebf3a0
MD5 fc0b7d90548d41b5c4bd2fd1cff13ff4
BLAKE2b-256 7c026f4b151585a896870525a54505e0552489119b8b42309aaf5cabf186ba59

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