diff --git a/random_sample/generate_tasks copy 2.py b/random_sample/generate_tasks copy 2.py deleted file mode 100644 index 33601b6..0000000 --- a/random_sample/generate_tasks copy 2.py +++ /dev/null @@ -1,364 +0,0 @@ -import os -import random -import json -import mysql.connector -from openai import OpenAI -from dotenv import load_dotenv - -# --- Configuration --- -load_dotenv() - -MYSQL_CONFIG = { - "host": "localhost", - "port": "23306", - "user": "mcpuser", - "password": "StrongPass123!", - "database": "magentodb" -} - -OPENAI_CONFIG = { - "api_key": os.getenv("OPENAI_API_KEY"), - "base_url": os.getenv("OPENAI_BASE_URL"), - "model": "gpt-4o" -} - -# --- Prompt Template --- -# This is a carefully engineered prompt to guide the LLM's output. -PROMPT_TEMPLATE = """ -You are an expert database analyst and a creative test case designer for e-commerce web applications. -Your goal is to generate realistic administrative tasks that can be solved by a Web Agent navigating an admin panel. - -I will provide you with the following context: -1. **Full Database Schema**: A list of `CREATE TABLE` statements for the core tables of a Magento e-commerce platform. -2. **Sampled Data**: A JSON object containing 5 random rows of data from 5 randomly selected core tables. This data is REAL and should be used to inspire specific, answerable questions. - -## Your Task - -Based on the provided schema and sample data, create a JSON object containing a single key, "questions", which holds an array of up to 10 unique task objects. - -### Requirements for Each Question: -- **Web Agent Solvable**: The task must represent a realistic action an administrator would perform in a web UI (e.g., "Find all orders for customer X", "Update the stock for product Y", "Approve a pending review"). -- **Grounded in Data**: The questions should be specific, using names, IDs, or values from the provided **Sampled Data** to make them concrete. -- **Utilize Schema**: You can formulate questions that require joining tables, even if not all tables were sampled. The full schema is your guide. - -### Output Format -The final output MUST be a single, valid JSON object. Do not include any other text, explanations, or markdown formatting like ```json. -The JSON object must have one key: "questions", containing a JSON array of task objects. - -Each object in the array must contain exactly three keys: `question`, `answer`, and `sql`. - -- **`question`**: (string) A natural language description of the task for a web agent. -- **`answer`**: (string, integer, float, or list) The precise and concise answer to the question, derived by running the SQL query against the database. -- **`sql`**: (string) The exact, runnable MySQL query that was used to find the answer. - -### Output Format Example -```json -{{ - "questions": [ - {{ - "question": "What is the email address for customer with ID 5?", - "answer": "customer5@example.com", - "sql": "SELECT email FROM customer_entity WHERE entity_id = 5;" - }}, - {{ - "question": "Find the total quantity of item with SKU 'ABC-123' in the cart.", - "answer": 3, - "sql": "SELECT SUM(qty) FROM quote_item WHERE sku = 'ABC-123';" - }} - ] -}} -``` - ---- -### Full Database Schema -{schema_context} - ---- -### Sampled Data -Here is the sample data from randomly selected tables. Use this to make your questions specific. - -{sampled_data_str} - ---- -Now, generate the JSON object based on these instructions. -""" - -# This is a carefully engineered prompt to verify the LLM's own output. -SEMANTIC_VERIFICATION_PROMPT_TEMPLATE = """ -You are a meticulous data verifier. Your task is to determine if a given "answer" is semantically correct and accurately supported by the "SQL query result". - -I will provide you with a JSON object containing: -1. `question`: The original question asked. -2. `sql`: The SQL query used to find the answer. -3. `answer`: The answer generated by a previous AI. -4. `sql_result`: The actual data returned by executing the SQL query. - -## Your Task -Carefully analyze the `sql_result` and compare it to the `answer`. The match should be semantic, not just a simple substring match. For example, if the question is "How many products are in stock?", an answer of "5" should be verifiable from the SQL result which might be `[(5,)]`. - -### Requirements: -- Respond with a single JSON object. -- Do not include any other text, explanations, or markdown formatting. -- The JSON object must have exactly two keys: - - `is_match`: (boolean) `true` if the `answer` is fully and accurately supported by the `sql_result`, otherwise `false`. - - `reason`: (string) A brief explanation for your decision. If it's a mismatch, explain why (e.g., "The answer is 'John Doe' but the result contains 'Jane Doe'", "The answer is a count but the result is a list of names"). - ---- -### Verification Data -{task_data_json} ---- - -Now, provide your verification as a JSON object. -""" - -def get_db_connection(): - """Establishes a connection to the MySQL database.""" - try: - conn = mysql.connector.connect(**MYSQL_CONFIG) - return conn - except mysql.connector.Error as err: - print(f"Error connecting to MySQL: {err}") - return None - -def get_full_schema(cursor, tables): - """Fetches the CREATE TABLE statements for all core tables.""" - schema_parts = [] - for table_name in tables: - try: - cursor.execute(f"SHOW CREATE TABLE `{table_name}`") - result = cursor.fetchone() - if result: - schema_parts.append(result[1]) # result[1] is the CREATE TABLE statement - except mysql.connector.Error as err: - print(f"Warning: Could not get schema for table {table_name}: {err}") - return "\n\n".join(schema_parts) - -def get_random_tables_and_samples(cursor, tables, num_tables=5, num_samples=5): - """Selects random tables and samples random rows from them.""" - selected_tables = random.sample(tables, num_tables) - sampled_data = {} - - for table_name in selected_tables: - try: - # Use ORDER BY RAND() for random sampling. Can be slow on very large tables. - query = f"SELECT * FROM `{table_name}` ORDER BY RAND() LIMIT {num_samples}" - cursor.execute(query) - - rows = cursor.fetchall() - if not rows: - sampled_data[table_name] = [] - continue - - columns = [desc[0] for desc in cursor.description] - - # Convert rows (tuples) to a list of dictionaries - sampled_rows = [] - for row in rows: - row_dict = {} - for i, col_value in enumerate(row): - # Handle bytes by decoding, fall back to string representation - if isinstance(col_value, bytes): - try: - row_dict[columns[i]] = col_value.decode('utf-8') - except UnicodeDecodeError: - row_dict[columns[i]] = str(col_value) - else: - row_dict[columns[i]] = col_value - sampled_rows.append(row_dict) - - sampled_data[table_name] = sampled_rows - - except mysql.connector.Error as err: - print(f"Warning: Could not sample data from table {table_name}: {err}") - sampled_data[table_name] = f"Error: {err}" - - return sampled_data - -def generate_questions(client, schema_context, sampled_data): - """Generates questions by calling the OpenAI API.""" - if not client: - raise ValueError("OpenAI client not provided.") - - sampled_data_str = json.dumps(sampled_data, indent=2, default=str) - - prompt = PROMPT_TEMPLATE.format( - schema_context=schema_context, - sampled_data_str=sampled_data_str - ) - - try: - response = client.chat.completions.create( - model=OPENAI_CONFIG["model"], - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": prompt} - ], - temperature=0.7, - response_format={"type": "json_object"}, - ) - content = response.choices[0].message.content - data = json.loads(content) - - # The prompt asks for {"questions": [...]}, so we extract the list. - if isinstance(data, dict) and "questions" in data and isinstance(data["questions"], list): - return data["questions"] - elif isinstance(data, list): - # Fallback in case the model returns a list directly - print("Warning: Model returned a raw list instead of an object with a 'questions' key.") - return data - else: - print(f"Warning: Failed to find a 'questions' list in the model's output. Got: {content}") - return None - - except Exception as e: - print(f"Error calling OpenAI API or parsing JSON: {e}") - return None - -def semantic_validate_tasks(tasks, client): - """ - Uses an LLM to semantically validate if the task's answer matches the SQL result. - """ - if not tasks: - return [] - - final_validated_tasks = [] - print("\nPerforming semantic validation with GPT-4o...") - - for task in tasks: - # Prepare data for the prompt, including the SQL result - task_data_for_prompt = { - "question": task["question"], - "sql": task["sql"], - "answer": task["answer"], - "sql_result": task["sql_result"] - } - task_data_json = json.dumps(task_data_for_prompt, indent=2, default=str) - - prompt = SEMANTIC_VERIFICATION_PROMPT_TEMPLATE.format(task_data_json=task_data_json) - - try: - print(f" - Verifying question: \"{task['question'][:80]}...\"") - response = client.chat.completions.create( - model=OPENAI_CONFIG["model"], - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": prompt} - ], - temperature=0.0, # We want deterministic validation - response_format={"type": "json_object"}, - ) - content = response.choices[0].message.content - verification_result = json.loads(content) - - if verification_result.get("is_match") is True: - # Task is valid. Rename sql_result for the final output. - print(f" - Validation PASSED.") - task['sql_execute_result'] = task.pop('sql_result') - final_validated_tasks.append(task) - else: - reason = verification_result.get('reason', 'No reason provided.') - print(f" - Validation FAILED. Filtering task.") - print(f" - Reason: {reason}") - print(f" - Question: {task['question']}") - print(f" - Expected Answer: {json.dumps(task['answer'], default=str)}") - print(f" - SQL: {task['sql']}") - sql_result_str = json.dumps(task['sql_result'], indent=2, default=str) - print(f" - SQL Result: {sql_result_str}") - - except Exception as e: - print(f" - An error occurred during semantic validation for task, filtering it out: {e}") - print(f" - Question: {task.get('question', 'N/A')}") - print(f" - SQL: {task.get('sql', 'N/A')}") - - return final_validated_tasks - -def main(): - """Main function to run the script.""" - # 1. Load the list of core tables - try: - with open('core_tables.json', 'r') as f: - core_tables = json.load(f) - except FileNotFoundError: - print("Error: core_tables.json not found. Please create it.") - return - - # 2. Connect to the database - conn = get_db_connection() - if not conn: - return - - cursor = conn.cursor() - - # 3. Setup OpenAI Client - if not OPENAI_CONFIG["api_key"]: - print("Error: OPENAI_API_KEY environment variable not set.") - return - client = OpenAI(api_key=OPENAI_CONFIG["api_key"], base_url=OPENAI_CONFIG["base_url"]) - - try: - # 4. Get full schema context - print("Fetching full database schema...") - schema_context = get_full_schema(cursor, core_tables) - - # 5. Get random samples and print them - print("Sampling data from 5 random tables...") - sampled_data = get_random_tables_and_samples(cursor, core_tables, num_tables=5, num_samples=5) - print(f"Sampled from tables: {list(sampled_data.keys())}") - print("\n--- Sampled Data ---") - print(json.dumps(sampled_data, indent=2, default=str)) - print("---------------------\n") - - # 6. Generate questions using the LLM - print("Generating questions with GPT-4o...") - generated_tasks = generate_questions(client, schema_context, sampled_data) - - # 7. Initial validation (SQL execution and substring check) - pre_validated_tasks = [] - if generated_tasks: - print("\nPerforming initial validation (SQL execution and substring match)...") - for task in generated_tasks: - if not isinstance(task, dict) or not all(k in task for k in ['sql', 'answer', 'question']): - print(f"Filtering task due to malformed structure or missing keys: {task}") - continue - - try: - cursor.execute(task['sql']) - sql_result = cursor.fetchall() - answer_str = str(task['answer']) - result_str = str(sql_result) - - if answer_str in result_str: - task['sql_result'] = sql_result # Attach result for the next validation step - pre_validated_tasks.append(task) - else: - print(f"Filtering task: Answer '{answer_str}' not found in SQL result.") - print(f" - Question: {task['question']}") - print(f" - SQL: {task['sql']}") - print(f" - Result: {result_str[:250]}...") - - except mysql.connector.Error as err: - print(f"Filtering task due to SQL error: {err}") - print(f" - Question: {task['question']}") - print(f" - SQL: {task['sql']}") - except Exception as e: - print(f"An unexpected error occurred during initial validation for task {task}: {e}") - - # 8. Semantic validation using LLM - validated_tasks = semantic_validate_tasks(pre_validated_tasks, client) - - # 9. Print the final JSON output - if validated_tasks: - print("\n--- Final Validated Tasks ---") - print(json.dumps(validated_tasks, indent=2, default=str)) - else: - print("Failed to generate any valid tasks after all validation steps.") - - finally: - # 10. Close the database connection - if conn.is_connected(): - cursor.close() - conn.close() - print("\nDatabase connection closed.") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/random_sample/generate_tasks copy 3.py b/random_sample/generate_tasks copy 3.py deleted file mode 100644 index 7dc7598..0000000 --- a/random_sample/generate_tasks copy 3.py +++ /dev/null @@ -1,370 +0,0 @@ -import os -import random -import json -import mysql.connector -from openai import OpenAI -from dotenv import load_dotenv - -# --- Configuration --- -load_dotenv() - -MYSQL_CONFIG = { - "host": "localhost", - "port": "23306", - "user": "mcpuser", - "password": "StrongPass123!", - "database": "magentodb" -} - -OPENAI_CONFIG = { - "api_key": os.getenv("OPENAI_API_KEY"), - "base_url": os.getenv("OPENAI_BASE_URL"), - "model": "gpt-4o" -} - -# --- Prompt Template --- -# This is a carefully engineered prompt to guide the LLM's output. -PROMPT_TEMPLATE = """ -You are an expert database analyst and a creative test case designer for e-commerce web applications. -Your goal is to generate realistic administrative tasks that can be solved by a Web Agent navigating an admin panel. - -I will provide you with the following context: -1. **Full Database Schema**: A list of `CREATE TABLE` statements for the core tables of a Magento e-commerce platform. -2. **Sampled Data**: A JSON object containing 5 random rows of data from 5 randomly selected core tables. This data is REAL and should be used to inspire specific, answerable questions. - -## Your Task - -Based on the provided schema and sample data, create a JSON object containing a single key, "questions", which holds an array of up to 10 unique task objects. - -### Requirements for Each Question: -- **Web Agent Solvable**: The task must represent a realistic action an administrator would perform in a web UI (e.g., "Find all orders for customer X", "Update the stock for product Y", "Approve a pending review"). -- **Grounded in Data**: The questions should be specific, using names, IDs, or values from the provided **Sampled Data** to make them concrete. -- **Utilize Schema**: You can formulate questions that require joining tables, even if not all tables were sampled. The full schema is your guide. - -### Output Format -The final output MUST be a single, valid JSON object. Do not include any other text, explanations, or markdown formatting like ```json. -The JSON object must have one key: "questions", containing a JSON array of task objects. - -Each object in the array must contain exactly three keys: `question`, `answer`, and `sql`. - -- **`question`**: (string) A natural language description of the task for a web agent. -- **`answer`**: (string, integer, float, or list) The precise and concise answer to the question, derived by running the SQL query against the database. -- **`sql`**: (string) The exact, runnable MySQL query that was used to find the answer. - -### Output Format Example -```json -{{ - "questions": [ - {{ - "question": "What is the email address for customer with ID 5?", - "answer": "customer5@example.com", - "sql": "SELECT email FROM customer_entity WHERE entity_id = 5;" - }}, - {{ - "question": "Find the total quantity of item with SKU 'ABC-123' in the cart.", - "answer": 3, - "sql": "SELECT SUM(qty) FROM quote_item WHERE sku = 'ABC-123';" - }} - ] -}} -``` - ---- -### Full Database Schema -{schema_context} - ---- -### Sampled Data -Here is the sample data from randomly selected tables. Use this to make your questions specific. - -{sampled_data_str} - ---- -Now, generate the JSON object based on these instructions. -""" - -# This is a new prompt to evaluate results and generate a corrected answer. -SEMANTIC_EVALUATION_PROMPT_TEMPLATE = """ -You are a precise data analyst. Your task is to evaluate if a SQL query's result adequately answers a given natural language question. If it does, you must formulate a concise, natural-language answer. - -I will provide you with a JSON object containing: -1. `question`: The original question asked. -2. `sql`: The SQL query that was executed. -3. `sql_result`: The actual data returned by executing the SQL query. - -## Your Task -1. **Analyze**: Determine if the `sql_result` contains the necessary information to definitively answer the `question`. -2. **Respond**: Based on your analysis, generate a JSON object with one of two structures. - -### Case 1: The question CAN be answered -If the `sql_result` provides a clear answer, respond with: -```json -{{ - "can_answer": true, - "new_answer": "..." -}} -``` -- `can_answer`: (boolean) Must be `true`. -- `new_answer`: (string, integer, float, or list) A concise, human-readable answer derived *only* from the `sql_result`. For example, if the result is `[(52.00,)]`, the answer can be "52.00" or 52.00. - -### Case 2: The question CANNOT be answered -If the `sql_result` is empty, irrelevant, or insufficient to answer the question, respond with: -```json -{{ - "can_answer": false, - "reason": "..." -}} -``` -- `can_answer`: (boolean) Must be `false`. -- `reason`: (string) A brief explanation for why the question cannot be answered from the given data (e.g., "The query returned no results.", "The result contains internal IDs, not the requested customer names."). - ---- -### Evaluation Data -{task_data_json} ---- - -Now, provide your evaluation as a JSON object. -""" - -def get_db_connection(): - """Establishes a connection to the MySQL database.""" - try: - conn = mysql.connector.connect(**MYSQL_CONFIG) - return conn - except mysql.connector.Error as err: - print(f"Error connecting to MySQL: {err}") - return None - -def get_full_schema(cursor, tables): - """Fetches the CREATE TABLE statements for all core tables.""" - schema_parts = [] - for table_name in tables: - try: - cursor.execute(f"SHOW CREATE TABLE `{table_name}`") - result = cursor.fetchone() - if result: - schema_parts.append(result[1]) # result[1] is the CREATE TABLE statement - except mysql.connector.Error as err: - print(f"Warning: Could not get schema for table {table_name}: {err}") - return "\n\n".join(schema_parts) - -def get_random_tables_and_samples(cursor, tables, num_tables=5, num_samples=5): - """Selects random tables and samples random rows from them.""" - selected_tables = random.sample(tables, num_tables) - sampled_data = {} - - for table_name in selected_tables: - try: - # Use ORDER BY RAND() for random sampling. Can be slow on very large tables. - query = f"SELECT * FROM `{table_name}` ORDER BY RAND() LIMIT {num_samples}" - cursor.execute(query) - - rows = cursor.fetchall() - if not rows: - sampled_data[table_name] = [] - continue - - columns = [desc[0] for desc in cursor.description] - - # Convert rows (tuples) to a list of dictionaries - sampled_rows = [] - for row in rows: - row_dict = {} - for i, col_value in enumerate(row): - # Handle bytes by decoding, fall back to string representation - if isinstance(col_value, bytes): - try: - row_dict[columns[i]] = col_value.decode('utf-8') - except UnicodeDecodeError: - row_dict[columns[i]] = str(col_value) - else: - row_dict[columns[i]] = col_value - sampled_rows.append(row_dict) - - sampled_data[table_name] = sampled_rows - - except mysql.connector.Error as err: - print(f"Warning: Could not sample data from table {table_name}: {err}") - sampled_data[table_name] = f"Error: {err}" - - return sampled_data - -def generate_questions(client, schema_context, sampled_data): - """Generates questions by calling the OpenAI API.""" - if not client: - raise ValueError("OpenAI client not provided.") - - sampled_data_str = json.dumps(sampled_data, indent=2, default=str) - - prompt = PROMPT_TEMPLATE.format( - schema_context=schema_context, - sampled_data_str=sampled_data_str - ) - - try: - response = client.chat.completions.create( - model=OPENAI_CONFIG["model"], - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": prompt} - ], - temperature=0.7, - response_format={"type": "json_object"}, - ) - content = response.choices[0].message.content - data = json.loads(content) - - # The prompt asks for {"questions": [...]}, so we extract the list. - if isinstance(data, dict) and "questions" in data and isinstance(data["questions"], list): - return data["questions"] - elif isinstance(data, list): - # Fallback in case the model returns a list directly - print("Warning: Model returned a raw list instead of an object with a 'questions' key.") - return data - else: - print(f"Warning: Failed to find a 'questions' list in the model's output. Got: {content}") - return None - - except Exception as e: - print(f"Error calling OpenAI API or parsing JSON: {e}") - return None - -def evaluate_and_refine_tasks(tasks, client): - """ - Uses an LLM to evaluate if a SQL result answers the question and refines the answer. - """ - if not tasks: - return [] - - final_validated_tasks = [] - print("\nPerforming semantic evaluation and answer refinement with GPT-4o...") - - for task in tasks: - # Prepare data for the prompt, excluding the original 'answer' - task_data_for_prompt = { - "question": task["question"], - "sql": task["sql"], - "sql_result": task["sql_result"] - } - task_data_json = json.dumps(task_data_for_prompt, indent=2, default=str) - - prompt = SEMANTIC_EVALUATION_PROMPT_TEMPLATE.format(task_data_json=task_data_json) - - try: - print(f" - Evaluating question: \"{task['question'][:80]}...\"") - response = client.chat.completions.create( - model=OPENAI_CONFIG["model"], - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": prompt} - ], - temperature=0.0, # We want deterministic evaluation - response_format={"type": "json_object"}, - ) - content = response.choices[0].message.content - evaluation_result = json.loads(content) - - if evaluation_result.get("can_answer") is True and "new_answer" in evaluation_result: - # Task is valid. Update the answer with the refined one from the LLM. - task['answer'] = evaluation_result['new_answer'] - task['sql_execute_result'] = task.pop('sql_result') - final_validated_tasks.append(task) - print(f" - Evaluation PASSED. New answer: {json.dumps(task['answer'])}") - else: - reason = evaluation_result.get('reason', 'No reason provided.') - print(f" - Evaluation FAILED. Filtering task.") - print(f" - Reason: {reason}") - print(f" - Question: {task['question']}") - print(f" - Original Answer: {json.dumps(task['answer'], default=str)}") - print(f" - SQL: {task['sql']}") - sql_result_str = json.dumps(task['sql_result'], indent=2, default=str) - print(f" - SQL Result: {sql_result_str}") - - except Exception as e: - print(f" - An error occurred during semantic evaluation for task, filtering it out: {e}") - print(f" - Question: {task.get('question', 'N/A')}") - print(f" - SQL: {task.get('sql', 'N/A')}") - - return final_validated_tasks - -def main(): - """Main function to run the script.""" - # 1. Load the list of core tables - try: - with open('core_tables.json', 'r') as f: - core_tables = json.load(f) - except FileNotFoundError: - print("Error: core_tables.json not found. Please create it.") - return - - # 2. Connect to the database - conn = get_db_connection() - if not conn: - return - - cursor = conn.cursor() - - # 3. Setup OpenAI Client - if not OPENAI_CONFIG["api_key"]: - print("Error: OPENAI_API_KEY environment variable not set.") - return - client = OpenAI(api_key=OPENAI_CONFIG["api_key"], base_url=OPENAI_CONFIG["base_url"]) - - try: - # 4. Get full schema context - print("Fetching full database schema...") - schema_context = get_full_schema(cursor, core_tables) - - # 5. Get random samples and print them - print("Sampling data from 5 random tables...") - sampled_data = get_random_tables_and_samples(cursor, core_tables, num_tables=5, num_samples=5) - print(f"Sampled from tables: {list(sampled_data.keys())}") - print("\n--- Sampled Data ---") - print(json.dumps(sampled_data, indent=2, default=str)) - print("---------------------\n") - - # 6. Generate questions using the LLM - print("Generating questions with GPT-4o...") - generated_tasks = generate_questions(client, schema_context, sampled_data) - - # 7. Execute SQL for all generated tasks - tasks_for_evaluation = [] - if generated_tasks: - print("\nExecuting SQL for generated tasks...") - for task in generated_tasks: - if not isinstance(task, dict) or not all(k in task for k in ['sql', 'answer', 'question']): - print(f"Filtering task due to malformed structure or missing keys: {task}") - continue - - try: - cursor.execute(task['sql']) - sql_result = cursor.fetchall() - task['sql_result'] = sql_result - tasks_for_evaluation.append(task) - - except mysql.connector.Error as err: - print(f"Filtering task due to SQL error: {err}") - print(f" - Question: {task['question']}") - print(f" - SQL: {task['sql']}") - except Exception as e: - print(f"An unexpected error occurred during SQL execution for task {task}: {e}") - - # 8. Semantic evaluation and answer refinement - validated_tasks = evaluate_and_refine_tasks(tasks_for_evaluation, client) - - # 9. Print the final JSON output - if validated_tasks: - print("\n--- Final Validated Tasks ---") - print(json.dumps(validated_tasks, indent=2, default=str)) - else: - print("Failed to generate any valid tasks after all validation steps.") - - finally: - # 10. Close the database connection - if conn.is_connected(): - cursor.close() - conn.close() - print("\nDatabase connection closed.") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/random_sample/generate_tasks copy 4.py b/random_sample/generate_tasks copy 4.py deleted file mode 100644 index 85ce167..0000000 --- a/random_sample/generate_tasks copy 4.py +++ /dev/null @@ -1,408 +0,0 @@ -import os -import random -import json -import mysql.connector -import argparse -from openai import OpenAI -from dotenv import load_dotenv - -# --- Configuration --- -load_dotenv() - -MYSQL_CONFIG = { - "host": "localhost", - "port": "23306", - "user": "mcpuser", - "password": "StrongPass123!", - "database": "magentodb" -} - -OPENAI_CONFIG = { - "api_key": os.getenv("OPENAI_API_KEY"), - "base_url": os.getenv("OPENAI_BASE_URL"), - "model": "gpt-4o" -} - -# --- Prompt Template --- -# This is a carefully engineered prompt to guide the LLM's output. -PROMPT_TEMPLATE = """ -You are an expert database analyst and a creative test case designer for e-commerce web applications. -Your goal is to generate realistic administrative tasks that can be solved by a Web Agent navigating an admin panel. - -I will provide you with the following context: -1. **Full Database Schema**: A list of `CREATE TABLE` statements for the core tables of a Magento e-commerce platform. -2. **Sampled Data**: A JSON object containing 5 random rows of data from 5 randomly selected core tables. This data is REAL and should be used to inspire specific, answerable questions. - -## Your Task - -Based on the provided schema and sample data, create a JSON object containing a single key, "questions", which holds an array of up to 10 unique task objects. - -### Requirements for Each Question: -- **Web Agent Solvable**: The task must represent a realistic action an administrator would perform in a web UI (e.g., "Find all orders for customer X", "Update the stock for product Y", "Approve a pending review"). -- **Grounded in Data**: The questions should be specific, using names, IDs, or values from the provided **Sampled Data** to make them concrete. -- **Utilize Schema**: You can formulate questions that require joining tables, even if not all tables were sampled. The full schema is your guide. - -### Output Format -The final output MUST be a single, valid JSON object. Do not include any other text, explanations, or markdown formatting like ```json. -The JSON object must have one key: "questions", containing a JSON array of task objects. - -Each object in the array must contain exactly three keys: `question`, `answer`, and `sql`. - -- **`question`**: (string) A natural language description of the task for a web agent. -- **`answer`**: (string, integer, float, or list) The precise and concise answer to the question, derived by running the SQL query against the database. -- **`sql`**: (string) The exact, runnable MySQL query that was used to find the answer. - -### Output Format Example -```json -{{ - "questions": [ - {{ - "question": "What is the email address for customer with ID 5?", - "answer": "customer5@example.com", - "sql": "SELECT email FROM customer_entity WHERE entity_id = 5;" - }}, - {{ - "question": "Find the total quantity of item with SKU 'ABC-123' in the cart.", - "answer": 3, - "sql": "SELECT SUM(qty) FROM quote_item WHERE sku = 'ABC-123';" - }} - ] -}} -``` - ---- -### Full Database Schema -{schema_context} - ---- -### Sampled Data -Here is the sample data from randomly selected tables. Use this to make your questions specific. - -{sampled_data_str} - ---- -Now, generate the JSON object based on these instructions. -""" - -# This is a new prompt to evaluate results and generate a corrected answer. -SEMANTIC_EVALUATION_PROMPT_TEMPLATE = """ -You are a precise data analyst. Your task is to evaluate if a SQL query's result adequately answers a given natural language question. If it does, you must formulate a concise, natural-language answer. - -I will provide you with a JSON object containing: -1. `question`: The original question asked. -2. `sql`: The SQL query that was executed. -3. `sql_result`: The actual data returned by executing the SQL query. - -## Your Task -1. **Analyze**: Determine if the `sql_result` contains the necessary information to definitively answer the `question`. -2. **Respond**: Based on your analysis, generate a JSON object with one of two structures. - -### Case 1: The question CAN be answered -If the `sql_result` provides a clear answer, respond with: -```json -{{ - "can_answer": true, - "new_answer": "..." -}} -``` -- `can_answer`: (boolean) Must be `true`. -- `new_answer`: (string, integer, float, or list) A concise, human-readable answer derived *only* from the `sql_result`. For example, if the result is `[(52.00,)]`, the answer can be "52.00" or 52.00. - -### Case 2: The question CANNOT be answered -If the `sql_result` is empty, irrelevant, or insufficient to answer the question, respond with: -```json -{{ - "can_answer": false, - "reason": "..." -}} -``` -- `can_answer`: (boolean) Must be `false`. -- `reason`: (string) A brief explanation for why the question cannot be answered from the given data (e.g., "The query returned no results.", "The result contains internal IDs, not the requested customer names."). - ---- -### Evaluation Data -{task_data_json} ---- - -Now, provide your evaluation as a JSON object. -""" - -def get_db_connection(): - """Establishes a connection to the MySQL database.""" - try: - conn = mysql.connector.connect(**MYSQL_CONFIG) - return conn - except mysql.connector.Error as err: - print(f"Error connecting to MySQL: {err}") - return None - -def get_full_schema(cursor, tables): - """Fetches the CREATE TABLE statements for all core tables.""" - schema_parts = [] - for table_name in tables: - try: - cursor.execute(f"SHOW CREATE TABLE `{table_name}`") - result = cursor.fetchone() - if result: - schema_parts.append(result[1]) # result[1] is the CREATE TABLE statement - except mysql.connector.Error as err: - print(f"Warning: Could not get schema for table {table_name}: {err}") - return "\n\n".join(schema_parts) - -def get_random_tables_and_samples(cursor, tables, num_tables=5, num_samples=5): - """Selects random tables and samples random rows from them.""" - selected_tables = random.sample(tables, num_tables) - sampled_data = {} - - for table_name in selected_tables: - try: - # Use ORDER BY RAND() for random sampling. Can be slow on very large tables. - query = f"SELECT * FROM `{table_name}` ORDER BY RAND() LIMIT {num_samples}" - cursor.execute(query) - - rows = cursor.fetchall() - if not rows: - sampled_data[table_name] = [] - continue - - columns = [desc[0] for desc in cursor.description] - - # Convert rows (tuples) to a list of dictionaries - sampled_rows = [] - for row in rows: - row_dict = {} - for i, col_value in enumerate(row): - # Handle bytes by decoding, fall back to string representation - if isinstance(col_value, bytes): - try: - row_dict[columns[i]] = col_value.decode('utf-8') - except UnicodeDecodeError: - row_dict[columns[i]] = str(col_value) - else: - row_dict[columns[i]] = col_value - sampled_rows.append(row_dict) - - sampled_data[table_name] = sampled_rows - - except mysql.connector.Error as err: - print(f"Warning: Could not sample data from table {table_name}: {err}") - sampled_data[table_name] = f"Error: {err}" - - return sampled_data - -def generate_questions(client, schema_context, sampled_data): - """Generates questions by calling the OpenAI API.""" - if not client: - raise ValueError("OpenAI client not provided.") - - sampled_data_str = json.dumps(sampled_data, indent=2, default=str) - - prompt = PROMPT_TEMPLATE.format( - schema_context=schema_context, - sampled_data_str=sampled_data_str - ) - - try: - response = client.chat.completions.create( - model=OPENAI_CONFIG["model"], - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": prompt} - ], - temperature=0.7, - response_format={"type": "json_object"}, - ) - content = response.choices[0].message.content - data = json.loads(content) - - # The prompt asks for {"questions": [...]}, so we extract the list. - if isinstance(data, dict) and "questions" in data and isinstance(data["questions"], list): - return data["questions"] - elif isinstance(data, list): - # Fallback in case the model returns a list directly - print("Warning: Model returned a raw list instead of an object with a 'questions' key.") - return data - else: - print(f"Warning: Failed to find a 'questions' list in the model's output. Got: {content}") - return None - - except Exception as e: - print(f"Error calling OpenAI API or parsing JSON: {e}") - return None - -def load_existing_tasks(filepath): - """Loads tasks from a JSON file if it exists.""" - if not os.path.exists(filepath): - return [] - try: - with open(filepath, 'r') as f: - content = f.read() - if not content: # Handle empty file - return [] - return json.loads(content) - except (json.JSONDecodeError, FileNotFoundError): - print(f"Warning: Could not read or parse {filepath}. Starting with an empty list.") - return [] - -def evaluate_and_refine_tasks(tasks, client): - """ - Uses an LLM to evaluate if a SQL result answers the question and refines the answer. - """ - if not tasks: - return [] - - final_validated_tasks = [] - print("\nPerforming semantic evaluation and answer refinement with GPT-4o...") - - for task in tasks: - # Prepare data for the prompt, excluding the original 'answer' - task_data_for_prompt = { - "question": task["question"], - "sql": task["sql"], - "sql_result": task["sql_result"] - } - task_data_json = json.dumps(task_data_for_prompt, indent=2, default=str) - - prompt = SEMANTIC_EVALUATION_PROMPT_TEMPLATE.format(task_data_json=task_data_json) - - try: - print(f" - Evaluating question: \"{task['question'][:80]}...\"") - response = client.chat.completions.create( - model=OPENAI_CONFIG["model"], - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": prompt} - ], - temperature=0.0, # We want deterministic evaluation - response_format={"type": "json_object"}, - ) - content = response.choices[0].message.content - evaluation_result = json.loads(content) - - if evaluation_result.get("can_answer") is True and "new_answer" in evaluation_result: - # Task is valid. Update the answer with the refined one from the LLM. - task['answer'] = evaluation_result['new_answer'] - task['sql_execute_result'] = task.pop('sql_result') - final_validated_tasks.append(task) - print(f" - Evaluation PASSED. New answer: {json.dumps(task['answer'])}") - else: - reason = evaluation_result.get('reason', 'No reason provided.') - print(f" - Evaluation FAILED. Filtering task.") - print(f" - Reason: {reason}") - print(f" - Question: {task['question']}") - print(f" - Original Answer: {json.dumps(task['answer'], default=str)}") - print(f" - SQL: {task['sql']}") - sql_result_str = json.dumps(task['sql_result'], indent=2, default=str) - print(f" - SQL Result: {sql_result_str}") - - except Exception as e: - print(f" - An error occurred during semantic evaluation for task, filtering it out: {e}") - print(f" - Question: {task.get('question', 'N/A')}") - print(f" - SQL: {task.get('sql', 'N/A')}") - - return final_validated_tasks - -def main(): - """Main function to run the script.""" - parser = argparse.ArgumentParser(description="Generate and validate e-commerce admin tasks.") - parser.add_argument( - "--target-count", - type=int, - required=True, - help="The total number of questions to generate." - ) - parser.add_argument( - "--output-file", - type=str, - default="generated_tasks.json", - help="The file to save the generated tasks to (in JSON format)." - ) - args = parser.parse_args() - - # Load existing tasks from the output file - all_tasks = load_existing_tasks(args.output_file) - print(f"Found {len(all_tasks)} existing valid tasks in '{args.output_file}'.") - - # Connect to DB and set up client - conn = get_db_connection() - if not conn: - return - cursor = conn.cursor() - - if not OPENAI_CONFIG["api_key"]: - print("Error: OPENAI_API_KEY environment variable not set.") - return - client = OpenAI(api_key=OPENAI_CONFIG["api_key"], base_url=OPENAI_CONFIG["base_url"]) - - try: - # Load core tables and schema once - try: - with open('core_tables.json', 'r') as f: - core_tables = json.load(f) - except FileNotFoundError: - print("Error: core_tables.json not found. Please create it.") - return - - print("Fetching full database schema...") - schema_context = get_full_schema(cursor, core_tables) - - # Start the generation loop - round_num = 1 - while len(all_tasks) < args.target_count: - print(f"\n--- Starting Generation Round {round_num} ---") - print(f"Goal: {args.target_count} | Current: {len(all_tasks)} | Needed: {args.target_count - len(all_tasks)}") - - # Get random samples for this round - print("Sampling data from 5 random tables...") - sampled_data = get_random_tables_and_samples(cursor, core_tables, num_tables=5, num_samples=5) - - # Generate questions - print("Generating questions with GPT-4o...") - generated_tasks = generate_questions(client, schema_context, sampled_data) - - # Execute SQL for generated tasks - tasks_for_evaluation = [] - if generated_tasks: - print("\nExecuting SQL for generated tasks...") - for task in generated_tasks: - if not isinstance(task, dict) or not all(k in task for k in ['sql', 'answer', 'question']): - print(f"Filtering task due to malformed structure: {task}") - continue - try: - cursor.execute(task['sql']) - sql_result = cursor.fetchall() - task['sql_result'] = sql_result - tasks_for_evaluation.append(task) - except mysql.connector.Error as err: - print(f"Filtering task due to SQL error: {err} on SQL: {task['sql']}") - - # Perform semantic evaluation and get validated tasks - validated_tasks = evaluate_and_refine_tasks(tasks_for_evaluation, client) - - # Append new tasks and save to file - if validated_tasks: - all_tasks.extend(validated_tasks) - with open(args.output_file, 'w') as f: - json.dump(all_tasks, f, indent=2, default=str) - - print("\n--- Round Summary ---") - print(f"Generated {len(validated_tasks)} new valid tasks in this round.") - print(f"Progress: {len(all_tasks)} / {args.target_count} tasks.") - else: - print("\n--- Round Summary ---") - print("No new valid tasks were generated in this round. Retrying...") - - round_num += 1 - - finally: - # Close the database connection - if conn.is_connected(): - cursor.close() - conn.close() - print("\nDatabase connection closed.") - - print(f"\nTarget of {args.target_count} tasks reached. Final output saved to {args.output_file}.") - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/random_sample/generate_tasks copy 5.py b/random_sample/generate_tasks copy 5.py deleted file mode 100644 index 2c0b0e2..0000000 --- a/random_sample/generate_tasks copy 5.py +++ /dev/null @@ -1,437 +0,0 @@ -import os -import random -import json -import mysql.connector -import argparse -from openai import OpenAI -from dotenv import load_dotenv - -# --- Configuration --- -load_dotenv() - -MYSQL_CONFIG = { - "host": "localhost", - "port": "23306", - "user": "mcpuser", - "password": "StrongPass123!", - "database": "magentodb" -} - -OPENAI_CONFIG = { - "api_key": os.getenv("OPENAI_API_KEY"), - "base_url": os.getenv("OPENAI_BASE_URL"), - "model": "gpt-4o" -} - -# --- Prompt Template --- -# This is a carefully engineered prompt to guide the LLM's output. -PROMPT_TEMPLATE = """ -You are an expert database analyst and a creative test case designer for e-commerce web applications. -Your goal is to generate realistic administrative tasks that can be solved by a Web Agent navigating an admin panel. - -I will provide you with the following context: -1. **Full Database Schema**: A list of `CREATE TABLE` statements for the core tables of a Magento e-commerce platform. -2. **Sampled Data**: A JSON object containing 5 random rows of data from 5 randomly selected core tables. This data is REAL and should be used to inspire specific, answerable questions. - -## Your Task - -Based on the provided schema and sample data, create a JSON object containing a single key, "questions", which holds an array of up to 10 unique task objects. - -### Requirements for Each Question: -- **Web Agent Solvable**: The task must represent a realistic action an administrator would perform in a web UI (e.g., "Find all orders for customer X", "Update the stock for product Y", "Approve a pending review"). -- **Grounded in Data**: The questions should be specific, using names, IDs, or values from the provided **Sampled Data** to make them concrete. -- **Utilize Schema**: You can formulate questions that require joining tables, even if not all tables were sampled. The full schema is your guide. - -### Output Format -The final output MUST be a single, valid JSON object. Do not include any other text, explanations, or markdown formatting like ```json. -The JSON object must have one key: "questions", containing a JSON array of task objects. - -Each object in the array must contain exactly three keys: `question`, `answer`, and `sql`. - -- **`question`**: (string) A natural language description of the task for a web agent. -- **`answer`**: (string, integer, float, or list) The precise and concise answer to the question, derived by running the SQL query against the database. -- **`sql`**: (string) The exact, runnable MySQL query that was used to find the answer. - -### Output Format Example -```json -{{ - "questions": [ - {{ - "question": "What is the email address for customer with ID 5?", - "answer": "customer5@example.com", - "sql": "SELECT email FROM customer_entity WHERE entity_id = 5;" - }}, - {{ - "question": "Find the total quantity of item with SKU 'ABC-123' in the cart.", - "answer": 3, - "sql": "SELECT SUM(qty) FROM quote_item WHERE sku = 'ABC-123';" - }} - ] -}} -``` - ---- -### Full Database Schema -{schema_context} - ---- -### Sampled Data -Here is the sample data from randomly selected tables. Use this to make your questions specific. - -{sampled_data_str} - ---- -Now, generate the JSON object based on these instructions. -""" - -# This is a new prompt to evaluate results and generate a corrected answer. -SEMANTIC_EVALUATION_PROMPT_TEMPLATE = """ -You are a precise data analyst. Your task is to evaluate if a SQL query's result adequately answers a given natural language question. You will then either refine the answer, or completely rephrase the question if the result set is large. - -I will provide you with a JSON object containing: -1. `question`: The original question asked. -2. `sql`: The SQL query that was executed. -3. `sql_result`: The actual data returned by executing the SQL query. -4. `row_count`: The number of rows in `sql_result`. - -## Your Task -Analyze the inputs and respond with a JSON object. You have three cases. The `new_answer` field MUST always be an array of strings. - -### Case 1: Large Result Set (Question Transformation) -If `row_count` is greater than 10 AND the original `question` does NOT already ask for a count (e.g., it is not phrased like "How many..."), you must transform the question. -Respond with: -```json -{{ - "can_answer": true, - "new_question": "How many items were found?", - "new_answer": ["42"] -}} -``` -- `can_answer`: (boolean) Must be `true`. -- `new_question`: (string) A rephrased question that asks for the quantity of items. For example, if the original question was "List all products", the new question should be "How many products were found?". -- `new_answer`: (array of strings) An array containing the `row_count` as a single string element. - -### Case 2: Standard Answer (No Transformation) -If Case 1 does not apply, but the `sql_result` still provides a clear answer to the original `question`, respond with: -```json -{{ - "can_answer": true, - "new_answer": ["value1", "value2", ...] -}} -``` -- `can_answer`: (boolean) Must be `true`. -- `new_answer`: (array of strings) An array containing all the essential parts of the answer extracted from `sql_result`. Every value from the result set that contributes to the answer should be included as a string in the array. This ensures answer completeness. - - **Example 1**: If `question` is "What is the status of order 123?" and `sql_result` is `[["processing"]]`, `new_answer` should be `["processing"]`. - - **Example 2**: If `question` is "List emails for pending customers" and `sql_result` is `[["test@a.com"], ["test@b.com"]]`, `new_answer` should be `["test@a.com", "test@b.com"]`. - - **Example 3**: If `question` is "Get product name and price for SKU 'XYZ'" and `sql_result` is `[["My Product", 19.99]]`, `new_answer` should be `["My Product", "19.99"]`. - -### Case 3: The question CANNOT be answered -If the `sql_result` is empty, irrelevant, or insufficient to answer the question, respond with: -```json -{{ - "can_answer": false, - "reason": "..." -}} -``` -- `can_answer`: (boolean) Must be `false`. -- `reason`: (string) A brief explanation for why the question cannot be answered. - ---- -### Evaluation Data -{task_data_json} ---- - -Now, provide your evaluation as a JSON object. -""" - -def get_db_connection(): - """Establishes a connection to the MySQL database.""" - try: - conn = mysql.connector.connect(**MYSQL_CONFIG) - return conn - except mysql.connector.Error as err: - print(f"Error connecting to MySQL: {err}") - return None - -def get_full_schema(cursor, tables): - """Fetches the CREATE TABLE statements for all core tables.""" - schema_parts = [] - for table_name in tables: - try: - cursor.execute(f"SHOW CREATE TABLE `{table_name}`") - result = cursor.fetchone() - if result: - schema_parts.append(result[1]) # result[1] is the CREATE TABLE statement - except mysql.connector.Error as err: - print(f"Warning: Could not get schema for table {table_name}: {err}") - return "\n\n".join(schema_parts) - -def get_random_tables_and_samples(cursor, tables, num_tables=5, num_samples=5): - """Selects random tables and samples random rows from them.""" - selected_tables = random.sample(tables, num_tables) - sampled_data = {} - - for table_name in selected_tables: - try: - # Use ORDER BY RAND() for random sampling. Can be slow on very large tables. - query = f"SELECT * FROM `{table_name}` ORDER BY RAND() LIMIT {num_samples}" - cursor.execute(query) - - rows = cursor.fetchall() - if not rows: - sampled_data[table_name] = [] - continue - - columns = [desc[0] for desc in cursor.description] - - # Convert rows (tuples) to a list of dictionaries - sampled_rows = [] - for row in rows: - row_dict = {} - for i, col_value in enumerate(row): - # Handle bytes by decoding, fall back to string representation - if isinstance(col_value, bytes): - try: - row_dict[columns[i]] = col_value.decode('utf-8') - except UnicodeDecodeError: - row_dict[columns[i]] = str(col_value) - else: - row_dict[columns[i]] = col_value - sampled_rows.append(row_dict) - - sampled_data[table_name] = sampled_rows - - except mysql.connector.Error as err: - print(f"Warning: Could not sample data from table {table_name}: {err}") - sampled_data[table_name] = f"Error: {err}" - - return sampled_data - -def generate_questions(client, schema_context, sampled_data): - """Generates questions by calling the OpenAI API.""" - if not client: - raise ValueError("OpenAI client not provided.") - - sampled_data_str = json.dumps(sampled_data, indent=2, default=str) - - prompt = PROMPT_TEMPLATE.format( - schema_context=schema_context, - sampled_data_str=sampled_data_str - ) - - try: - response = client.chat.completions.create( - model=OPENAI_CONFIG["model"], - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": prompt} - ], - temperature=0.7, - response_format={"type": "json_object"}, - ) - content = response.choices[0].message.content - data = json.loads(content) - - # The prompt asks for {"questions": [...]}, so we extract the list. - if isinstance(data, dict) and "questions" in data and isinstance(data["questions"], list): - return data["questions"] - elif isinstance(data, list): - # Fallback in case the model returns a list directly - print("Warning: Model returned a raw list instead of an object with a 'questions' key.") - return data - else: - print(f"Warning: Failed to find a 'questions' list in the model's output. Got: {content}") - return None - - except Exception as e: - print(f"Error calling OpenAI API or parsing JSON: {e}") - return None - -def load_existing_tasks(filepath): - """Loads tasks from a JSON file if it exists.""" - if not os.path.exists(filepath): - return [] - try: - with open(filepath, 'r') as f: - content = f.read() - if not content: # Handle empty file - return [] - return json.loads(content) - except (json.JSONDecodeError, FileNotFoundError): - print(f"Warning: Could not read or parse {filepath}. Starting with an empty list.") - return [] - -def evaluate_and_refine_tasks(tasks, client): - """ - Uses an LLM to evaluate if a SQL result answers the question and refines the answer. - """ - if not tasks: - return [] - - final_validated_tasks = [] - print("\nPerforming semantic evaluation and answer refinement with GPT-4o...") - - for task in tasks: - # Prepare data for the prompt, excluding the original 'answer' - task_data_for_prompt = { - "question": task["question"], - "sql": task["sql"], - "sql_result": task["sql_result"], - "row_count": task["row_count"] - } - task_data_json = json.dumps(task_data_for_prompt, indent=2, default=str) - - prompt = SEMANTIC_EVALUATION_PROMPT_TEMPLATE.format(task_data_json=task_data_json) - - try: - print(f" - Evaluating question: \"{task['question'][:80]}...\"") - response = client.chat.completions.create( - model=OPENAI_CONFIG["model"], - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": prompt} - ], - temperature=0.0, # We want deterministic evaluation - response_format={"type": "json_object"}, - ) - content = response.choices[0].message.content - evaluation_result = json.loads(content) - - if evaluation_result.get("can_answer") is True and "new_answer" in evaluation_result: - # Task is valid. Update the answer with the refined one from the LLM. - task['answer'] = evaluation_result['new_answer'] - - # If the LLM provides a new question, update it. - if 'new_question' in evaluation_result: - task['question'] = evaluation_result['new_question'] - print(f" - Question was rephrased: \"{task['question']}\"") - - task['sql_execute_result'] = task.pop('sql_result') - task.pop('row_count', None) # Clean up temp key - final_validated_tasks.append(task) - print(f" - Evaluation PASSED. New answer: {json.dumps(task['answer'])}") - else: - reason = evaluation_result.get('reason', 'No reason provided.') - print(f" - Evaluation FAILED. Filtering task.") - print(f" - Reason: {reason}") - print(f" - Question: {task['question']}") - print(f" - SQL: {task['sql']}") - sql_result_str = json.dumps(task['sql_result'], indent=2, default=str) - print(f" - SQL Result: {sql_result_str}") - - except Exception as e: - print(f" - An error occurred during semantic evaluation for task, filtering it out: {e}") - print(f" - Question: {task.get('question', 'N/A')}") - print(f" - SQL: {task.get('sql', 'N/A')}") - - return final_validated_tasks - -def main(): - """Main function to run the script.""" - parser = argparse.ArgumentParser(description="Generate and validate e-commerce admin tasks.") - parser.add_argument( - "--target-count", - type=int, - required=True, - help="The total number of questions to generate." - ) - parser.add_argument( - "--output-file", - type=str, - default="generated_tasks.json", - help="The file to save the generated tasks to (in JSON format)." - ) - args = parser.parse_args() - - # Load existing tasks from the output file - all_tasks = load_existing_tasks(args.output_file) - print(f"Found {len(all_tasks)} existing valid tasks in '{args.output_file}'.") - - # Connect to DB and set up client - conn = get_db_connection() - if not conn: - return - cursor = conn.cursor() - - if not OPENAI_CONFIG["api_key"]: - print("Error: OPENAI_API_KEY environment variable not set.") - return - client = OpenAI(api_key=OPENAI_CONFIG["api_key"], base_url=OPENAI_CONFIG["base_url"]) - - try: - # Load core tables and schema once - try: - with open('core_tables.json', 'r') as f: - core_tables = json.load(f) - except FileNotFoundError: - print("Error: core_tables.json not found. Please create it.") - return - - print("Fetching full database schema...") - schema_context = get_full_schema(cursor, core_tables) - - # Start the generation loop - round_num = 1 - while len(all_tasks) < args.target_count: - print(f"\n--- Starting Generation Round {round_num} ---") - print(f"Goal: {args.target_count} | Current: {len(all_tasks)} | Needed: {args.target_count - len(all_tasks)}") - - # Get random samples for this round - print("Sampling data from 5 random tables...") - sampled_data = get_random_tables_and_samples(cursor, core_tables, num_tables=5, num_samples=5) - - # Generate questions - print("Generating questions with GPT-4o...") - generated_tasks = generate_questions(client, schema_context, sampled_data) - - # Execute SQL for generated tasks - tasks_for_evaluation = [] - if generated_tasks: - print("\nExecuting SQL for generated tasks...") - for task in generated_tasks: - if not isinstance(task, dict) or not all(k in task for k in ['sql', 'answer', 'question']): - print(f"Filtering task due to malformed structure: {task}") - continue - try: - cursor.execute(task['sql']) - sql_result = cursor.fetchall() - # Create a new dict for evaluation, excluding the original 'answer'. - tasks_for_evaluation.append({ - 'question': task['question'], - 'sql': task['sql'], - 'sql_result': sql_result, - 'row_count': len(sql_result) - }) - except mysql.connector.Error as err: - print(f"Filtering task due to SQL error: {err} on SQL: {task['sql']}") - - # Perform semantic evaluation and get validated tasks - validated_tasks = evaluate_and_refine_tasks(tasks_for_evaluation, client) - - # Append new tasks and save to file - if validated_tasks: - all_tasks.extend(validated_tasks) - with open(args.output_file, 'w') as f: - json.dump(all_tasks, f, indent=2, default=str) - - print("\n--- Round Summary ---") - print(f"Generated {len(validated_tasks)} new valid tasks in this round.") - print(f"Progress: {len(all_tasks)} / {args.target_count} tasks.") - else: - print("\n--- Round Summary ---") - print("No new valid tasks were generated in this round. Retrying...") - - round_num += 1 - - finally: - # Close the database connection - if conn.is_connected(): - cursor.close() - conn.close() - print("\nDatabase connection closed.") - - print(f"\nTarget of {args.target_count} tasks reached. Final output saved to {args.output_file}.") - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/random_sample/generate_tasks copy.py b/random_sample/generate_tasks copy.py deleted file mode 100644 index 43324cc..0000000 --- a/random_sample/generate_tasks copy.py +++ /dev/null @@ -1,246 +0,0 @@ -import os -import random -import json -import mysql.connector -from openai import OpenAI -from dotenv import load_dotenv - -# --- Configuration --- -load_dotenv() - -MYSQL_CONFIG = { - "host": "localhost", - "port": "23306", - "user": "mcpuser", - "password": "StrongPass123!", - "database": "magentodb" -} - -OPENAI_CONFIG = { - "api_key": os.getenv("OPENAI_API_KEY"), - "base_url": os.getenv("OPENAI_BASE_URL"), - "model": "gpt-4o" -} - -# --- Prompt Template --- -# This is a carefully engineered prompt to guide the LLM's output. -PROMPT_TEMPLATE = """ -You are an expert database analyst and a creative test case designer for e-commerce web applications. -Your goal is to generate realistic administrative tasks that can be solved by a Web Agent navigating an admin panel. - -I will provide you with the following context: -1. **Full Database Schema**: A list of `CREATE TABLE` statements for the core tables of a Magento e-commerce platform. -2. **Sampled Data**: A JSON object containing 5 random rows of data from 5 randomly selected core tables. This data is REAL and should be used to inspire specific, answerable questions. - -## Your Task - -Based on the provided schema and sample data, create a JSON array of up to 10 unique questions. - -### Requirements for Each Question: -- **Web Agent Solvable**: The task must represent a realistic action an administrator would perform in a web UI (e.g., "Find all orders for customer X", "Update the stock for product Y", "Approve a pending review"). -- **Grounded in Data**: The questions should be specific, using names, IDs, or values from the provided **Sampled Data** to make them concrete. -- **Utilize Schema**: You can formulate questions that require joining tables, even if not all tables were sampled. The full schema is your guide. - -### Output Format -The final output MUST be a single, valid JSON array of objects. Do not include any other text, explanations, or markdown formatting like ```json. - -Each object in the array must contain exactly three keys: `question`, `answer`, and `sql`. - -- **`question`**: (string) A natural language description of the task for a web agent. -- **`answer`**: (string, integer, float, or list) The precise and concise answer to the question, derived by running the SQL query against the database. -- **`sql`**: (string) The exact, runnable MySQL query that was used to find the answer. - ---- -### Full Database Schema -{schema_context} - ---- -### Sampled Data -Here is the sample data from randomly selected tables. Use this to make your questions specific. - -{sampled_data_str} - ---- -Now, generate the JSON array based on these instructions. -""" - -def get_db_connection(): - """Establishes a connection to the MySQL database.""" - try: - conn = mysql.connector.connect(**MYSQL_CONFIG) - return conn - except mysql.connector.Error as err: - print(f"Error connecting to MySQL: {err}") - return None - -def get_full_schema(cursor, tables): - """Fetches the CREATE TABLE statements for all core tables.""" - schema_parts = [] - for table_name in tables: - try: - cursor.execute(f"SHOW CREATE TABLE `{table_name}`") - result = cursor.fetchone() - if result: - schema_parts.append(result[1]) # result[1] is the CREATE TABLE statement - except mysql.connector.Error as err: - print(f"Warning: Could not get schema for table {table_name}: {err}") - return "\n\n".join(schema_parts) - -def get_random_tables_and_samples(cursor, tables, num_tables=5, num_samples=5): - """Selects random tables and samples random rows from them.""" - selected_tables = random.sample(tables, num_tables) - sampled_data = {} - - for table_name in selected_tables: - try: - # Use ORDER BY RAND() for random sampling. Can be slow on very large tables. - query = f"SELECT * FROM `{table_name}` ORDER BY RAND() LIMIT {num_samples}" - cursor.execute(query) - - rows = cursor.fetchall() - if not rows: - sampled_data[table_name] = [] - continue - - columns = [desc[0] for desc in cursor.description] - - # Convert rows (tuples) to a list of dictionaries - sampled_rows = [] - for row in rows: - row_dict = {} - for i, col_value in enumerate(row): - # Handle bytes by decoding, fall back to string representation - if isinstance(col_value, bytes): - try: - row_dict[columns[i]] = col_value.decode('utf-8') - except UnicodeDecodeError: - row_dict[columns[i]] = str(col_value) - else: - row_dict[columns[i]] = col_value - sampled_rows.append(row_dict) - - sampled_data[table_name] = sampled_rows - - except mysql.connector.Error as err: - print(f"Warning: Could not sample data from table {table_name}: {err}") - sampled_data[table_name] = f"Error: {err}" - - return sampled_data - -def generate_questions(schema_context, sampled_data): - """Generates questions by calling the OpenAI API.""" - if not OPENAI_CONFIG["api_key"]: - raise ValueError("OPENAI_API_KEY environment variable not set.") - - client = OpenAI(api_key=OPENAI_CONFIG["api_key"], base_url=OPENAI_CONFIG["base_url"]) - - sampled_data_str = json.dumps(sampled_data, indent=2, default=str) - - prompt = PROMPT_TEMPLATE.format( - schema_context=schema_context, - sampled_data_str=sampled_data_str - ) - - try: - response = client.chat.completions.create( - model=OPENAI_CONFIG["model"], - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": prompt} - ], - temperature=0.7, - ) - content = response.choices[0].message.content - return json.loads(content) - except Exception as e: - print(f"Error calling OpenAI API: {e}") - return None - -def main(): - """Main function to run the script.""" - # 1. Load the list of core tables - try: - with open('core_tables.json', 'r') as f: - core_tables = json.load(f) - except FileNotFoundError: - print("Error: core_tables.json not found. Please create it.") - return - - # 2. Connect to the database - conn = get_db_connection() - if not conn: - return - - cursor = conn.cursor() - - try: - # 3. Get full schema context - print("Fetching full database schema...") - schema_context = get_full_schema(cursor, core_tables) - - # 4. Get random samples and print them - print("Sampling data from 5 random tables...") - sampled_data = get_random_tables_and_samples(cursor, core_tables, num_tables=5, num_samples=5) - print(f"Sampled from tables: {list(sampled_data.keys())}") - print("\n--- Sampled Data ---") - print(json.dumps(sampled_data, indent=2, default=str)) - print("---------------------\n") - - # 5. Generate questions using the LLM - print("Generating questions with GPT-4o...") - generated_tasks = generate_questions(schema_context, sampled_data) - - # 6. Validate and filter the generated tasks - validated_tasks = [] - if generated_tasks: - print("\nValidating generated tasks...") - for task in generated_tasks: - # Basic validation for task structure - if not isinstance(task, dict) or not all(k in task for k in ['sql', 'answer', 'question']): - print(f"Filtering task due to malformed structure or missing keys: {task}") - continue - - try: - # Execute the SQL query from the task - cursor.execute(task['sql']) - sql_result = cursor.fetchall() - - # Convert both answer and result to string for flexible substring matching - answer_str = str(task['answer']) - result_str = str(sql_result) - - # If the answer exists in the result, the task is valid - if answer_str in result_str: - validated_tasks.append(task) - else: - # Log tasks that are filtered because the answer doesn't match - print(f"Filtering task: Answer '{answer_str}' not found in SQL result.") - print(f" - Question: {task['question']}") - print(f" - SQL: {task['sql']}") - # Showing a snippet of a large result is helpful for debugging - print(f" - Result: {result_str[:250]}...") - - except mysql.connector.Error as err: - # Log tasks that are filtered due to SQL errors - print(f"Filtering task due to SQL error: {err}") - print(f" - Question: {task['question']}") - print(f" - SQL: {task['sql']}") - except Exception as e: - print(f"An unexpected error occurred during validation for task {task}: {e}") - - # 7. Print the final JSON output - if validated_tasks: - print("\n--- Generated and Validated Tasks ---") - print(json.dumps(validated_tasks, indent=2)) - else: - print("Failed to generate any valid tasks.") - - finally: - # 8. Close the database connection - if conn.is_connected(): - cursor.close() - conn.close() - print("\nDatabase connection closed.") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/random_sample/generate_tasks.py b/random_sample/generate_tasks.py index 1aa2095..f5bf278 100644 --- a/random_sample/generate_tasks.py +++ b/random_sample/generate_tasks.py @@ -9,8 +9,10 @@ from dotenv import load_dotenv # --- Configuration --- load_dotenv() +server_address = "localhost" + MYSQL_CONFIG = { - "host": "localhost", + "host": server_address, "port": "23306", "user": "mcpuser", "password": "StrongPass123!", diff --git a/random_sample/generated_tasks.json.bak b/random_sample/generated_tasks.json.bak deleted file mode 100644 index d19033a..0000000 --- a/random_sample/generated_tasks.json.bak +++ /dev/null @@ -1,3539 +0,0 @@ -[ - { - "question": "What is the SKU of the product with entity_id 1304?", - "answer": "adrienne-trek-jacket-s-gray", - "sql": "SELECT value FROM catalog_product_entity_varchar WHERE entity_id = 1304 AND attribute_id = 121 AND store_id = 0;", - "sql_execute_result": [ - [ - "adrienne-trek-jacket-s-gray" - ] - ] - }, - { - "question": "What is the shipping method for the order with increment ID '000000092'?", - "answer": "flatrate_flatrate", - "sql": "SELECT shipping_method FROM sales_order WHERE increment_id = '000000092';", - "sql_execute_result": [ - [ - "flatrate_flatrate" - ] - ] - }, - { - "question": "What is the total quantity ordered for the order with entity ID 166?", - "answer": "5.0000", - "sql": "SELECT total_qty_ordered FROM sales_order WHERE entity_id = 166;", - "sql_execute_result": [ - [ - "5.0000" - ] - ] - }, - { - "question": "What is the base grand total for the sales order with entity ID 190?", - "answer": "145.0000", - "sql": "SELECT base_grand_total FROM sales_order WHERE entity_id = 190;", - "sql_execute_result": [ - [ - "145.0000" - ] - ] - }, - { - "question": "Has the email for the order with increment ID '000000092' been sent?", - "answer": "Yes, the email for the order with increment ID '000000092' has been sent.", - "sql": "SELECT email_sent FROM sales_order WHERE increment_id = '000000092';", - "sql_execute_result": [ - [ - 1 - ] - ] - }, - { - "question": "List all complete orders with a flat rate shipping method.", - "answer": [ - 4, - 9, - 11, - 13, - 16, - 17, - 20, - 21, - 22, - 23, - 24, - 27, - 28, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 43, - 45, - 47, - 48, - 50, - 51, - 53, - 54, - 55, - 57, - 61, - 62, - 64, - 69, - 70, - 71, - 73, - 75, - 78, - 79, - 82, - 83, - 84, - 87, - 89, - 90, - 91, - 92, - 93, - 96, - 97, - 99, - 100, - 102, - 104, - 105, - 112, - 113, - 114, - 115, - 116, - 119, - 121, - 127, - 128, - 130, - 131, - 133, - 137, - 138, - 139, - 140, - 145, - 146, - 147, - 148, - 150, - 154, - 155, - 156, - 158, - 160, - 161, - 163, - 164, - 166, - 169, - 179, - 181, - 182, - 184, - 186, - 187, - 188, - 189, - 190, - 192, - 196, - 197, - 199, - 200, - 201, - 202, - 203, - 205, - 207, - 208, - 213, - 214, - 215, - 216, - 217, - 218, - 223, - 225, - 228, - 230, - 231, - 233, - 235, - 236, - 237, - 238, - 239, - 240, - 243, - 247, - 250, - 251, - 253, - 256, - 257, - 258, - 260, - 262, - 263, - 264, - 268, - 269, - 270, - 274, - 276, - 277, - 281, - 282, - 284, - 285, - 286, - 287, - 288, - 295, - 297, - 298 - ], - "sql": "SELECT entity_id FROM sales_order WHERE status = 'complete' AND shipping_method = 'flatrate_flatrate';", - "sql_execute_result": [ - [ - 4 - ], - [ - 9 - ], - [ - 11 - ], - [ - 13 - ], - [ - 16 - ], - [ - 17 - ], - [ - 20 - ], - [ - 21 - ], - [ - 22 - ], - [ - 23 - ], - [ - 24 - ], - [ - 27 - ], - [ - 28 - ], - [ - 31 - ], - [ - 32 - ], - [ - 33 - ], - [ - 34 - ], - [ - 35 - ], - [ - 36 - ], - [ - 37 - ], - [ - 43 - ], - [ - 45 - ], - [ - 47 - ], - [ - 48 - ], - [ - 50 - ], - [ - 51 - ], - [ - 53 - ], - [ - 54 - ], - [ - 55 - ], - [ - 57 - ], - [ - 61 - ], - [ - 62 - ], - [ - 64 - ], - [ - 69 - ], - [ - 70 - ], - [ - 71 - ], - [ - 73 - ], - [ - 75 - ], - [ - 78 - ], - [ - 79 - ], - [ - 82 - ], - [ - 83 - ], - [ - 84 - ], - [ - 87 - ], - [ - 89 - ], - [ - 90 - ], - [ - 91 - ], - [ - 92 - ], - [ - 93 - ], - [ - 96 - ], - [ - 97 - ], - [ - 99 - ], - [ - 100 - ], - [ - 102 - ], - [ - 104 - ], - [ - 105 - ], - [ - 112 - ], - [ - 113 - ], - [ - 114 - ], - [ - 115 - ], - [ - 116 - ], - [ - 119 - ], - [ - 121 - ], - [ - 127 - ], - [ - 128 - ], - [ - 130 - ], - [ - 131 - ], - [ - 133 - ], - [ - 137 - ], - [ - 138 - ], - [ - 139 - ], - [ - 140 - ], - [ - 145 - ], - [ - 146 - ], - [ - 147 - ], - [ - 148 - ], - [ - 150 - ], - [ - 154 - ], - [ - 155 - ], - [ - 156 - ], - [ - 158 - ], - [ - 160 - ], - [ - 161 - ], - [ - 163 - ], - [ - 164 - ], - [ - 166 - ], - [ - 169 - ], - [ - 179 - ], - [ - 181 - ], - [ - 182 - ], - [ - 184 - ], - [ - 186 - ], - [ - 187 - ], - [ - 188 - ], - [ - 189 - ], - [ - 190 - ], - [ - 192 - ], - [ - 196 - ], - [ - 197 - ], - [ - 199 - ], - [ - 200 - ], - [ - 201 - ], - [ - 202 - ], - [ - 203 - ], - [ - 205 - ], - [ - 207 - ], - [ - 208 - ], - [ - 213 - ], - [ - 214 - ], - [ - 215 - ], - [ - 216 - ], - [ - 217 - ], - [ - 218 - ], - [ - 223 - ], - [ - 225 - ], - [ - 228 - ], - [ - 230 - ], - [ - 231 - ], - [ - 233 - ], - [ - 235 - ], - [ - 236 - ], - [ - 237 - ], - [ - 238 - ], - [ - 239 - ], - [ - 240 - ], - [ - 243 - ], - [ - 247 - ], - [ - 250 - ], - [ - 251 - ], - [ - 253 - ], - [ - 256 - ], - [ - 257 - ], - [ - 258 - ], - [ - 260 - ], - [ - 262 - ], - [ - 263 - ], - [ - 264 - ], - [ - 268 - ], - [ - 269 - ], - [ - 270 - ], - [ - 274 - ], - [ - 276 - ], - [ - 277 - ], - [ - 281 - ], - [ - 282 - ], - [ - 284 - ], - [ - 285 - ], - [ - 286 - ], - [ - 287 - ], - [ - 288 - ], - [ - 295 - ], - [ - 297 - ], - [ - 298 - ] - ] - }, - { - "question": "How many items are ordered in total for the order with increment ID '000000190'?", - "answer": 2.0, - "sql": "SELECT total_qty_ordered FROM sales_order WHERE increment_id = '000000190';", - "sql_execute_result": [ - [ - "2.0000" - ] - ] - }, - { - "question": "What is the total weight of the order with entity ID 193?", - "answer": "4.0000", - "sql": "SELECT weight FROM sales_order WHERE entity_id = 193;", - "sql_execute_result": [ - [ - "4.0000" - ] - ] - }, - { - "question": "Is the order with increment ID '000000023' a virtual order?", - "answer": "No, the order with increment ID '000000023' is not a virtual order.", - "sql": "SELECT is_virtual FROM sales_order WHERE increment_id = '000000023';", - "sql_execute_result": [ - [ - 0 - ] - ] - }, - { - "question": "What is the total number of completed orders for customer Matt Baker?", - "answer": 7, - "sql": "SELECT COUNT(*) FROM sales_order_grid WHERE customer_id = 13 AND status = 'complete';", - "sql_execute_result": [ - [ - 7 - ] - ] - }, - { - "question": "Find the email of the customer who placed the order with increment ID '000000290'.", - "answer": "jla_7781@gmail.com", - "sql": "SELECT customer_email FROM sales_order_grid WHERE increment_id = '000000290';", - "sql_execute_result": [ - [ - "jla_7781@gmail.com" - ] - ] - }, - { - "question": "What is the name of the category with the entity ID 22?", - "answer": "bottoms-women", - "sql": "SELECT value FROM catalog_category_entity_varchar WHERE entity_id = 22 AND attribute_id = 119;", - "sql_execute_result": [ - [ - "bottoms-women" - ] - ] - }, - { - "question": "What is the status of the order with increment ID '000000126'?", - "answer": "canceled", - "sql": "SELECT status FROM sales_order_grid WHERE increment_id = '000000126';", - "sql_execute_result": [ - [ - "canceled" - ] - ] - }, - { - "question": "Determine the shipping method for Matt Baker's order created on '2022-03-31'.", - "answer": "Flat Rate - Fixed", - "sql": "SELECT shipping_information FROM sales_order_grid WHERE customer_email = 'matt.baker@yahoo.com' AND created_at = '2022-03-31 05:17:09';", - "sql_execute_result": [ - [ - "Flat Rate - Fixed" - ] - ] - }, - { - "question": "What is the default state for the status 'complete'?", - "answer": "complete", - "sql": "SELECT state FROM sales_order_status_state WHERE status = 'complete';", - "sql_execute_result": [ - [ - "complete" - ] - ] - }, - { - "question": "Find the customer group ID for the customer who placed the order with increment ID '000000092'.", - "answer": "1", - "sql": "SELECT customer_group FROM sales_order_grid WHERE increment_id = '000000092';", - "sql_execute_result": [ - [ - "1" - ] - ] - }, - { - "question": "What is the label for the status 'processing'?", - "answer": "Processing", - "sql": "SELECT label FROM sales_order_status WHERE status = 'processing';", - "sql_execute_result": [ - [ - "Processing" - ] - ] - }, - { - "question": "Find all orders for customer with email 'soccerfanatic22@gmail.com'.", - "answer": [ - { - "entity_id": 123, - "increment_id": "000000123", - "grand_total": "209.0000" - }, - { - "entity_id": 129, - "increment_id": "000000129", - "grand_total": "151.0000" - }, - { - "entity_id": 155, - "increment_id": "000000155", - "grand_total": "191.0000" - }, - { - "entity_id": 162, - "increment_id": "000000162", - "grand_total": "152.2000" - }, - { - "entity_id": 170, - "increment_id": "000000170", - "grand_total": "66.0000" - }, - { - "entity_id": 242, - "increment_id": "000000242", - "grand_total": "183.0000" - }, - { - "entity_id": 285, - "increment_id": "000000285", - "grand_total": "82.0000" - }, - { - "entity_id": 286, - "increment_id": "000000286", - "grand_total": "101.2500" - } - ], - "sql": "SELECT entity_id, increment_id, grand_total FROM sales_order WHERE customer_email = 'soccerfanatic22@gmail.com';", - "sql_execute_result": [ - [ - 123, - "000000123", - "209.0000" - ], - [ - 129, - "000000129", - "151.0000" - ], - [ - 155, - "000000155", - "191.0000" - ], - [ - 162, - "000000162", - "152.2000" - ], - [ - 170, - "000000170", - "66.0000" - ], - [ - 242, - "000000242", - "183.0000" - ], - [ - 285, - "000000285", - "82.0000" - ], - [ - 286, - "000000286", - "101.2500" - ] - ] - }, - { - "question": "What is the total quantity ordered for the order with increment ID '000000141'?", - "answer": "4.0000", - "sql": "SELECT total_qty_ordered FROM sales_order WHERE increment_id = '000000141';", - "sql_execute_result": [ - [ - "4.0000" - ] - ] - }, - { - "question": "Find the region code for 'Kauno Apskritis' in Lithuania.", - "answer": "LT-KU", - "sql": "SELECT code FROM directory_country_region WHERE default_name = 'Kauno Apskritis' AND country_id = 'LT';", - "sql_execute_result": [ - [ - "LT-KU" - ] - ] - }, - { - "question": "List the products with SKU containing 'Sprite Stasis Ball 75 cm'.", - "answer": [ - "24-WG083-blue", - "24-WG083-gray", - "24-WG083-pink" - ], - "sql": "SELECT product_id, sku, name FROM sales_order_item WHERE name LIKE '%Sprite Stasis Ball 75 cm%';", - "sql_execute_result": [ - [ - 32, - "24-WG083-blue", - "Sprite Stasis Ball 75 cm" - ], - [ - 30, - "24-WG083-gray", - "Sprite Stasis Ball 75 cm" - ], - [ - 32, - "24-WG083-blue", - "Sprite Stasis Ball 75 cm" - ], - [ - 31, - "24-WG083-pink", - "Sprite Stasis Ball 75 cm" - ], - [ - 30, - "24-WG083-gray", - "Sprite Stasis Ball 75 cm" - ], - [ - 31, - "24-WG083-pink", - "Sprite Stasis Ball 75 cm" - ], - [ - 32, - "24-WG083-blue", - "Sprite Stasis Ball 75 cm" - ], - [ - 32, - "24-WG083-blue", - "Sprite Stasis Ball 75 cm" - ], - [ - 31, - "24-WG083-pink", - "Sprite Stasis Ball 75 cm" - ], - [ - 31, - "24-WG083-pink", - "Sprite Stasis Ball 75 cm" - ], - [ - 30, - "24-WG083-gray", - "Sprite Stasis Ball 75 cm" - ], - [ - 30, - "24-WG083-gray", - "Sprite Stasis Ball 75 cm" - ] - ] - }, - { - "question": "What is the average rating value for product ID 1620?", - "answer": 3.0, - "sql": "SELECT AVG(value) AS average_rating FROM rating_option_vote WHERE entity_pk_value = 1620;", - "sql_execute_result": [ - [ - "3.0000" - ] - ] - }, - { - "question": "Find the order ID for the order that contains the product with SKU 'WJ04-M-Red'.", - "answer": [ - 124, - 244 - ], - "sql": "SELECT order_id FROM sales_order_item WHERE sku = 'WJ04-M-Red';", - "sql_execute_result": [ - [ - 124 - ], - [ - 124 - ], - [ - 244 - ], - [ - 244 - ] - ] - }, - { - "question": "What is the customer name for the billing address ID 570?", - "answer": "Olivia Lee", - "sql": "SELECT customer_firstname, customer_lastname FROM sales_order WHERE billing_address_id = 570;", - "sql_execute_result": [ - [ - "Olivia", - "Lee" - ] - ] - }, - { - "question": "Find the order status for the order with increment ID '000000206'.", - "answer": "canceled", - "sql": "SELECT status FROM sales_order WHERE increment_id = '000000206';", - "sql_execute_result": [ - [ - "canceled" - ] - ] - }, - { - "question": "List order IDs with the shipping method 'flatrate_flatrate'.", - "answer": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308 - ], - "sql": "SELECT entity_id FROM sales_order WHERE shipping_method = 'flatrate_flatrate';", - "sql_execute_result": [ - [ - 1 - ], - [ - 2 - ], - [ - 3 - ], - [ - 4 - ], - [ - 5 - ], - [ - 6 - ], - [ - 7 - ], - [ - 8 - ], - [ - 9 - ], - [ - 10 - ], - [ - 11 - ], - [ - 12 - ], - [ - 13 - ], - [ - 14 - ], - [ - 15 - ], - [ - 16 - ], - [ - 17 - ], - [ - 18 - ], - [ - 19 - ], - [ - 20 - ], - [ - 21 - ], - [ - 22 - ], - [ - 23 - ], - [ - 24 - ], - [ - 25 - ], - [ - 26 - ], - [ - 27 - ], - [ - 28 - ], - [ - 29 - ], - [ - 30 - ], - [ - 31 - ], - [ - 32 - ], - [ - 33 - ], - [ - 34 - ], - [ - 35 - ], - [ - 36 - ], - [ - 37 - ], - [ - 38 - ], - [ - 39 - ], - [ - 40 - ], - [ - 41 - ], - [ - 42 - ], - [ - 43 - ], - [ - 44 - ], - [ - 45 - ], - [ - 46 - ], - [ - 47 - ], - [ - 48 - ], - [ - 49 - ], - [ - 50 - ], - [ - 51 - ], - [ - 52 - ], - [ - 53 - ], - [ - 54 - ], - [ - 55 - ], - [ - 56 - ], - [ - 57 - ], - [ - 58 - ], - [ - 59 - ], - [ - 60 - ], - [ - 61 - ], - [ - 62 - ], - [ - 63 - ], - [ - 64 - ], - [ - 65 - ], - [ - 66 - ], - [ - 67 - ], - [ - 68 - ], - [ - 69 - ], - [ - 70 - ], - [ - 71 - ], - [ - 72 - ], - [ - 73 - ], - [ - 74 - ], - [ - 75 - ], - [ - 76 - ], - [ - 77 - ], - [ - 78 - ], - [ - 79 - ], - [ - 80 - ], - [ - 81 - ], - [ - 82 - ], - [ - 83 - ], - [ - 84 - ], - [ - 85 - ], - [ - 86 - ], - [ - 87 - ], - [ - 88 - ], - [ - 89 - ], - [ - 90 - ], - [ - 91 - ], - [ - 92 - ], - [ - 93 - ], - [ - 94 - ], - [ - 95 - ], - [ - 96 - ], - [ - 97 - ], - [ - 98 - ], - [ - 99 - ], - [ - 100 - ], - [ - 101 - ], - [ - 102 - ], - [ - 103 - ], - [ - 104 - ], - [ - 105 - ], - [ - 106 - ], - [ - 107 - ], - [ - 108 - ], - [ - 109 - ], - [ - 110 - ], - [ - 111 - ], - [ - 112 - ], - [ - 113 - ], - [ - 114 - ], - [ - 115 - ], - [ - 116 - ], - [ - 117 - ], - [ - 118 - ], - [ - 119 - ], - [ - 120 - ], - [ - 121 - ], - [ - 122 - ], - [ - 123 - ], - [ - 124 - ], - [ - 125 - ], - [ - 126 - ], - [ - 127 - ], - [ - 128 - ], - [ - 129 - ], - [ - 130 - ], - [ - 131 - ], - [ - 132 - ], - [ - 133 - ], - [ - 134 - ], - [ - 135 - ], - [ - 136 - ], - [ - 137 - ], - [ - 138 - ], - [ - 139 - ], - [ - 140 - ], - [ - 141 - ], - [ - 142 - ], - [ - 143 - ], - [ - 144 - ], - [ - 145 - ], - [ - 146 - ], - [ - 147 - ], - [ - 148 - ], - [ - 149 - ], - [ - 150 - ], - [ - 151 - ], - [ - 152 - ], - [ - 153 - ], - [ - 154 - ], - [ - 155 - ], - [ - 156 - ], - [ - 157 - ], - [ - 158 - ], - [ - 159 - ], - [ - 160 - ], - [ - 161 - ], - [ - 162 - ], - [ - 163 - ], - [ - 164 - ], - [ - 165 - ], - [ - 166 - ], - [ - 167 - ], - [ - 168 - ], - [ - 169 - ], - [ - 170 - ], - [ - 171 - ], - [ - 172 - ], - [ - 173 - ], - [ - 174 - ], - [ - 175 - ], - [ - 176 - ], - [ - 177 - ], - [ - 178 - ], - [ - 179 - ], - [ - 180 - ], - [ - 181 - ], - [ - 182 - ], - [ - 183 - ], - [ - 184 - ], - [ - 185 - ], - [ - 186 - ], - [ - 187 - ], - [ - 188 - ], - [ - 189 - ], - [ - 190 - ], - [ - 191 - ], - [ - 192 - ], - [ - 193 - ], - [ - 194 - ], - [ - 195 - ], - [ - 196 - ], - [ - 197 - ], - [ - 198 - ], - [ - 199 - ], - [ - 200 - ], - [ - 201 - ], - [ - 202 - ], - [ - 203 - ], - [ - 204 - ], - [ - 205 - ], - [ - 206 - ], - [ - 207 - ], - [ - 208 - ], - [ - 209 - ], - [ - 210 - ], - [ - 211 - ], - [ - 212 - ], - [ - 213 - ], - [ - 214 - ], - [ - 215 - ], - [ - 216 - ], - [ - 217 - ], - [ - 218 - ], - [ - 219 - ], - [ - 220 - ], - [ - 221 - ], - [ - 222 - ], - [ - 223 - ], - [ - 224 - ], - [ - 225 - ], - [ - 226 - ], - [ - 227 - ], - [ - 228 - ], - [ - 229 - ], - [ - 230 - ], - [ - 231 - ], - [ - 232 - ], - [ - 233 - ], - [ - 234 - ], - [ - 235 - ], - [ - 236 - ], - [ - 237 - ], - [ - 238 - ], - [ - 239 - ], - [ - 240 - ], - [ - 241 - ], - [ - 242 - ], - [ - 243 - ], - [ - 244 - ], - [ - 245 - ], - [ - 246 - ], - [ - 247 - ], - [ - 248 - ], - [ - 249 - ], - [ - 250 - ], - [ - 251 - ], - [ - 252 - ], - [ - 253 - ], - [ - 254 - ], - [ - 255 - ], - [ - 256 - ], - [ - 257 - ], - [ - 258 - ], - [ - 259 - ], - [ - 260 - ], - [ - 261 - ], - [ - 262 - ], - [ - 263 - ], - [ - 264 - ], - [ - 265 - ], - [ - 266 - ], - [ - 267 - ], - [ - 268 - ], - [ - 269 - ], - [ - 270 - ], - [ - 271 - ], - [ - 272 - ], - [ - 273 - ], - [ - 274 - ], - [ - 275 - ], - [ - 276 - ], - [ - 277 - ], - [ - 278 - ], - [ - 279 - ], - [ - 280 - ], - [ - 281 - ], - [ - 282 - ], - [ - 283 - ], - [ - 284 - ], - [ - 285 - ], - [ - 286 - ], - [ - 287 - ], - [ - 288 - ], - [ - 289 - ], - [ - 290 - ], - [ - 291 - ], - [ - 292 - ], - [ - 293 - ], - [ - 294 - ], - [ - 295 - ], - [ - 296 - ], - [ - 297 - ], - [ - 298 - ], - [ - 299 - ], - [ - 300 - ], - [ - 301 - ], - [ - 302 - ], - [ - 303 - ], - [ - 304 - ], - [ - 305 - ], - [ - 306 - ], - [ - 307 - ], - [ - 308 - ] - ] - }, - { - "question": "What is the email address for the customer named 'Hannah Lim'?", - "answer": "hannah.lim@gmail.com", - "sql": "SELECT email FROM customer_grid_flat WHERE name = 'Hannah Lim';", - "sql_execute_result": [ - [ - "hannah.lim@gmail.com" - ] - ] - }, - { - "question": "How many search results are there for the query 'Joust Bag'?", - "answer": 10, - "sql": "SELECT num_results FROM search_query WHERE query_text = 'Joust Bag';", - "sql_execute_result": [ - [ - 10 - ] - ] - }, - { - "question": "List all customers located in Hoboken, New Jersey.", - "answer": [ - "Amanda Kim", - "Matthew Kim", - "Natalie Kim" - ], - "sql": "SELECT name FROM customer_grid_flat WHERE billing_city = 'Hoboken' AND billing_region = 'New Jersey';", - "sql_execute_result": [ - [ - "Amanda Kim" - ], - [ - "Matthew Kim" - ], - [ - "Natalie Kim" - ] - ] - }, - { - "question": "What is the ISO3 code for the country with ISO2 code 'AE'?", - "answer": "ARE", - "sql": "SELECT iso3_code FROM directory_country WHERE iso2_code = 'AE';", - "sql_execute_result": [ - [ - "ARE" - ] - ] - }, - { - "question": "What is the name of the store group with ID 1?", - "answer": "Main Website Store", - "sql": "SELECT name FROM store_group WHERE group_id = 1;", - "sql_execute_result": [ - [ - "Main Website Store" - ] - ] - }, - { - "question": "Find the rating value for the rating option with code '3'.", - "answer": 3, - "sql": "SELECT value FROM rating_option WHERE code = '3';", - "sql_execute_result": [ - [ - 3 - ], - [ - 3 - ], - [ - 3 - ], - [ - 3 - ] - ] - }, - { - "question": "Is the search query 'Antonia Racer Tank' active?", - "answer": "Yes, the search query 'Antonia Racer Tank' is active.", - "sql": "SELECT is_active FROM search_query WHERE query_text = 'Antonia Racer Tank';", - "sql_execute_result": [ - [ - 1 - ] - ] - }, - { - "question": "What is the default store ID for the group named 'Default'?", - "answer": 0, - "sql": "SELECT default_store_id FROM store_group WHERE name = 'Default';", - "sql_execute_result": [ - [ - 0 - ] - ] - }, - { - "question": "What is the billing telephone number for the customer 'Matt Baker'?", - "answer": "4045551234", - "sql": "SELECT billing_telephone FROM customer_grid_flat WHERE name = 'Matt Baker';", - "sql_execute_result": [ - [ - "4045551234" - ] - ] - }, - { - "question": "What is the stock quantity for product with ID 1502?", - "answer": "100.0000", - "sql": "SELECT qty FROM cataloginventory_stock_item WHERE product_id = 1502;", - "sql_execute_result": [ - [ - "100.0000" - ] - ] - }, - { - "question": "List all order statuses and their labels.", - "answer": [ - { - "status": "canceled", - "label": "Canceled" - }, - { - "status": "closed", - "label": "Closed" - }, - { - "status": "complete", - "label": "Complete" - }, - { - "status": "fraud", - "label": "Suspected Fraud" - }, - { - "status": "holded", - "label": "On Hold" - }, - { - "status": "payment_review", - "label": "Payment Review" - }, - { - "status": "paypal_canceled_reversal", - "label": "PayPal Canceled Reversal" - }, - { - "status": "paypal_reversed", - "label": "PayPal Reversed" - }, - { - "status": "pending", - "label": "Pending" - }, - { - "status": "pending_payment", - "label": "Pending Payment" - }, - { - "status": "pending_paypal", - "label": "Pending PayPal" - }, - { - "status": "processing", - "label": "Processing" - } - ], - "sql": "SELECT status, label FROM sales_order_status;", - "sql_execute_result": [ - [ - "canceled", - "Canceled" - ], - [ - "closed", - "Closed" - ], - [ - "complete", - "Complete" - ], - [ - "fraud", - "Suspected Fraud" - ], - [ - "holded", - "On Hold" - ], - [ - "payment_review", - "Payment Review" - ], - [ - "paypal_canceled_reversal", - "PayPal Canceled Reversal" - ], - [ - "paypal_reversed", - "PayPal Reversed" - ], - [ - "pending", - "Pending" - ], - [ - "pending_payment", - "Pending Payment" - ], - [ - "pending_paypal", - "Pending PayPal" - ], - [ - "processing", - "Processing" - ] - ] - }, - { - "question": "What is the average rating value for product with ID 11 based on votes?", - "answer": "3.6667", - "sql": "SELECT AVG(value) AS average_rating FROM rating_option_vote WHERE entity_pk_value = 11;", - "sql_execute_result": [ - [ - "3.6667" - ] - ] - }, - { - "question": "Find the sequence table for invoices in store with ID 1.", - "answer": "sequence_invoice_1", - "sql": "SELECT sequence_table FROM sales_sequence_meta WHERE entity_type = 'invoice' AND store_id = 1;", - "sql_execute_result": [ - [ - "sequence_invoice_1" - ] - ] - }, - { - "question": "Is product with ID 889 in stock?", - "answer": "Yes, the product with ID 889 is in stock.", - "sql": "SELECT is_in_stock FROM cataloginventory_stock_item WHERE product_id = 889;", - "sql_execute_result": [ - [ - 1 - ] - ] - }, - { - "question": "Retrieve all reviews and their percent rating for product with ID 11.", - "answer": [ - { - "review_id": 169, - "percent": 100 - }, - { - "review_id": 170, - "percent": 100 - }, - { - "review_id": 171, - "percent": 20 - } - ], - "sql": "SELECT review_id, percent FROM rating_option_vote WHERE entity_pk_value = 11;", - "sql_execute_result": [ - [ - 169, - 100 - ], - [ - 170, - 100 - ], - [ - 171, - 20 - ] - ] - }, - { - "question": "How many sequence values are present in the order sequence table?", - "answer": 308, - "sql": "SELECT COUNT(sequence_value) FROM sequence_order_1;", - "sql_execute_result": [ - [ - 308 - ] - ] - }, - { - "question": "What is the entity type for sequence table 'sequence_shipment_1'?", - "answer": "shipment", - "sql": "SELECT entity_type FROM sales_sequence_meta WHERE sequence_table = 'sequence_shipment_1';", - "sql_execute_result": [ - [ - "shipment" - ] - ] - }, - { - "question": "Find the minimum sale quantity configuration for product with ID 598.", - "answer": "1.0000", - "sql": "SELECT min_sale_qty FROM cataloginventory_stock_item WHERE product_id = 598;", - "sql_execute_result": [ - [ - "1.0000" - ] - ] - }, - { - "question": "Does the product with ID 1229 allow backorders?", - "answer": "No, the product with ID 1229 does not allow backorders.", - "sql": "SELECT backorders FROM cataloginventory_stock_item WHERE product_id = 1229;", - "sql_execute_result": [ - [ - 0 - ] - ] - }, - { - "question": "What is the status of the order with increment ID '000000152'?", - "answer": "canceled", - "sql": "SELECT status FROM sales_order_grid WHERE increment_id = '000000152';", - "sql_execute_result": [ - [ - "canceled" - ] - ] - }, - { - "question": "Find the total grand total for orders placed by customer with email 'jane.doe@hotmail.com'.", - "answer": 1634.72, - "sql": "SELECT SUM(grand_total) FROM sales_order_grid WHERE customer_email = 'jane.doe@hotmail.com';", - "sql_execute_result": [ - [ - "1634.7200" - ] - ] - }, - { - "question": "Which CMS page is currently inactive?", - "answer": "Privacy Policy", - "sql": "SELECT title FROM cms_page WHERE is_active = 0;", - "sql_execute_result": [ - [ - "Privacy Policy" - ] - ] - }, - { - "question": "What is the name of the website with code 'base'?", - "answer": "Main Website", - "sql": "SELECT name FROM store_website WHERE code = 'base';", - "sql_execute_result": [ - [ - "Main Website" - ] - ] - }, - { - "question": "What is the value associated with EAV attribute option ID 71?", - "answer": "Hydration Pocket", - "sql": "SELECT value FROM eav_attribute_option_value WHERE option_id = 71;", - "sql_execute_result": [ - [ - "Hydration Pocket" - ] - ] - }, - { - "question": "Find all orders for customer with ID 2.", - "answer": [ - "000000009", - "000000059", - "000000068", - "000000079", - "000000093", - "000000095", - "000000096", - "000000107", - "000000115", - "000000144", - "000000217", - "000000257", - "000000273" - ], - "sql": "SELECT increment_id FROM sales_order_grid WHERE customer_id = 2;", - "sql_execute_result": [ - [ - "000000009" - ], - [ - "000000059" - ], - [ - "000000068" - ], - [ - "000000079" - ], - [ - "000000093" - ], - [ - "000000095" - ], - [ - "000000096" - ], - [ - "000000107" - ], - [ - "000000115" - ], - [ - "000000144" - ], - [ - "000000217" - ], - [ - "000000257" - ], - [ - "000000273" - ] - ] - }, - { - "question": "What is the payment method used for the order by 'Bob Johnson'?", - "answer": "checkmo", - "sql": "SELECT payment_method FROM sales_order_grid WHERE customer_name = 'Bob Johnson';", - "sql_execute_result": [ - [ - "checkmo" - ], - [ - "checkmo" - ], - [ - "checkmo" - ], - [ - "checkmo" - ], - [ - "checkmo" - ], - [ - "checkmo" - ], - [ - "checkmo" - ], - [ - "checkmo" - ] - ] - }, - { - "question": "What is the layout of the CMS page titled '404 Not Found'?", - "answer": "2columns-right", - "sql": "SELECT page_layout FROM cms_page WHERE title = '404 Not Found';", - "sql_execute_result": [ - [ - "2columns-right" - ] - ] - }, - { - "question": "Find the shipping address associated with the order increment ID '000000289'.", - "answer": "333 S Broad St, Philadelphia, Pennsylvania, 19102", - "sql": "SELECT shipping_address FROM sales_order_grid WHERE increment_id = '000000289';", - "sql_execute_result": [ - [ - "333 S Broad St,Philadelphia,Pennsylvania,19102" - ] - ] - }, - { - "question": "What is the default name for the region with code 'CN-JX' in China?", - "answer": "Jiangxi Sheng", - "sql": "SELECT default_name FROM directory_country_region WHERE code = 'CN-JX' AND country_id = 'CN';", - "sql_execute_result": [ - [ - "Jiangxi Sheng" - ] - ] - }, - { - "question": "Find all completed orders on 2023-05-04 in store with ID 1.", - "answer": 1, - "sql": "SELECT orders_count FROM sales_order_aggregated_created WHERE period = '2023-05-04' AND store_id = 1 AND order_status = 'complete';", - "sql_execute_result": [ - [ - 1 - ] - ] - }, - { - "question": "What is the title of the review by nickname 'Ezra'?", - "answer": "I slipped on a rock on these shoes and I", - "sql": "SELECT title FROM review_detail WHERE nickname = 'Ezra';", - "sql_execute_result": [ - [ - "I slipped on a rock on these shoes and I" - ] - ] - }, - { - "question": "How many orders were canceled on 2022-12-05 in store with ID 1?", - "answer": 1, - "sql": "SELECT orders_count FROM sales_order_aggregated_created WHERE period = '2022-12-05' AND store_id = 1 AND order_status = 'canceled';", - "sql_execute_result": [ - [ - 1 - ] - ] - }, - { - "question": "What is the attribute code for the attribute with ID 152?", - "answer": "style_general", - "sql": "SELECT attribute_code FROM eav_attribute WHERE attribute_id = 152;", - "sql_execute_result": [ - [ - "style_general" - ] - ] - }, - { - "question": "What is the backend type for the 'image' attribute?", - "answer": "varchar", - "sql": "SELECT backend_type FROM eav_attribute WHERE attribute_code = 'image';", - "sql_execute_result": [ - [ - "varchar" - ], - [ - "varchar" - ] - ] - }, - { - "question": "What is the shipping amount for the complete order on 2022-06-18?", - "answer": "The shipping amount for the complete order on 2022-06-18 is 10.00.", - "sql": "SELECT total_shipping_amount FROM sales_order_aggregated_created WHERE period = '2022-06-18' AND order_status = 'complete';", - "sql_execute_result": [ - [ - "10.0000" - ], - [ - "10.0000" - ] - ] - }, - { - "question": "What is the name of the region with ID 880 in Italy?", - "answer": "Medio Campidano", - "sql": "SELECT default_name FROM directory_country_region WHERE region_id = 880 AND country_id = 'IT';", - "sql_execute_result": [ - [ - "Medio Campidano" - ] - ] - }, - { - "question": "List the sequence values in the shipment sequence table.", - "answer": [ - 1, - 2, - 3 - ], - "sql": "SELECT sequence_value FROM sequence_shipment_1;", - "sql_execute_result": [ - [ - 1 - ], - [ - 2 - ], - [ - 3 - ] - ] - }, - { - "question": "What is the frontend input type for the 'email' attribute?", - "answer": "text", - "sql": "SELECT frontend_input FROM eav_attribute WHERE attribute_code = 'email';", - "sql_execute_result": [ - [ - "text" - ] - ] - }, - { - "question": "Find the total quantity ordered for product with ID 315.", - "answer": 1.0, - "sql": "SELECT SUM(qty_ordered) FROM sales_order_item WHERE product_id = 315;", - "sql_execute_result": [ - [ - "1.0000" - ] - ] - }, - { - "question": "What is the total grand total of all canceled orders?", - "answer": "17408.07", - "sql": "SELECT SUM(base_grand_total) FROM sales_order WHERE status = 'canceled';", - "sql_execute_result": [ - [ - "17408.0700" - ] - ] - }, - { - "question": "How many orders have been canceled in store with ID 0?", - "answer": 125, - "sql": "SELECT COUNT(*) FROM sales_order_aggregated_created WHERE store_id = 0 AND order_status = 'canceled';", - "sql_execute_result": [ - [ - 125 - ] - ] - }, - { - "question": "What is the product name for product with ID 315 in the daily bestsellers?", - "answer": "Orion Two-Tone Fitted Jacket-XL-Black", - "sql": "SELECT product_name FROM sales_bestsellers_aggregated_daily WHERE product_id = 315;", - "sql_execute_result": [ - [ - "Orion Two-Tone Fitted Jacket-XL-Black" - ], - [ - "Orion Two-Tone Fitted Jacket-XL-Black" - ] - ] - }, - { - "question": "What is the order status of the order with ID 308?", - "answer": "pending", - "sql": "SELECT status FROM sales_order WHERE entity_id = 308;", - "sql_execute_result": [ - [ - "pending" - ] - ] - }, - { - "question": "Check if the product with SKU 'MT02-M-Gray' is in stock.", - "answer": "The product with SKU 'MT02-M-Gray' is in stock.", - "sql": "SELECT is_in_stock FROM cataloginventory_stock_item WHERE product_id = (SELECT entity_id FROM catalog_product_entity WHERE sku = 'MT02-M-Gray');", - "sql_execute_result": [ - [ - 1 - ] - ] - }, - { - "question": "How many orders were placed by the customer with email 'customer5@example.com'?", - "answer": 0, - "sql": "SELECT COUNT(*) FROM sales_order WHERE customer_email = 'customer5@example.com';", - "sql_execute_result": [ - [ - 0 - ] - ] - }, - { - "question": "What is the total quantity ordered for order ID 308?", - "answer": "4.0000", - "sql": "SELECT total_qty_ordered FROM sales_order WHERE entity_id = 308;", - "sql_execute_result": [ - [ - "4.0000" - ] - ] - }, - { - "question": "What is the email address for the customer with ID 24?", - "answer": "musiclover99@hotmail.com", - "sql": "SELECT email FROM customer_entity WHERE entity_id = 24;", - "sql_execute_result": [ - [ - "musiclover99@hotmail.com" - ] - ] - }, - { - "question": "Find the total number of reviews for the product with ID 937.", - "answer": 3, - "sql": "SELECT COUNT(*) FROM review WHERE entity_pk_value = 937;", - "sql_execute_result": [ - [ - 3 - ] - ] - }, - { - "question": "What is the rating value given in the review with ID 256?", - "answer": 4, - "sql": "SELECT value FROM rating_option_vote WHERE review_id = 256;", - "sql_execute_result": [ - [ - 4 - ] - ] - }, - { - "question": "What is the first name of the customer with email 'jessica.wong@gmail.com'?", - "answer": "Jessica", - "sql": "SELECT firstname FROM customer_entity WHERE email = 'jessica.wong@gmail.com';", - "sql_execute_result": [ - [ - "Jessica" - ] - ] - }, - { - "question": "Find the sequence table associated with shipments for store ID 1.", - "answer": "sequence_shipment_1", - "sql": "SELECT sequence_table FROM sales_sequence_meta WHERE entity_type = 'shipment' AND store_id = 1;", - "sql_execute_result": [ - [ - "sequence_shipment_1" - ] - ] - }, - { - "question": "How many reviews are pending approval?", - "answer": 346, - "sql": "SELECT COUNT(*) FROM review WHERE status_id = 1;", - "sql_execute_result": [ - [ - 346 - ] - ] - }, - { - "question": "What is the customer group ID for the customer named 'Isaac Rodriguez'?", - "answer": 1, - "sql": "SELECT group_id FROM customer_entity WHERE firstname = 'Isaac' AND lastname = 'Rodriguez';", - "sql_execute_result": [ - [ - 1 - ] - ] - }, - { - "question": "What percentage rating did the product with ID 1412 receive in its review?", - "answer": [ - 80, - 60, - 80 - ], - "sql": "SELECT percent FROM rating_option_vote WHERE entity_pk_value = 1412;", - "sql_execute_result": [ - [ - 80 - ], - [ - 60 - ], - [ - 80 - ] - ] - }, - { - "question": "Find the category ID for the product with ID 648.", - "answer": 17, - "sql": "SELECT category_id FROM catalog_category_product WHERE product_id = 648;", - "sql_execute_result": [ - [ - 17 - ] - ] - }, - { - "question": "What is the email address for the customer associated with order ID 233?", - "answer": "daniel.jackson@hotmail.com", - "sql": "SELECT email FROM sales_order_address WHERE parent_id = 233 AND address_type = 'billing';", - "sql_execute_result": [ - [ - "daniel.jackson@hotmail.com" - ] - ] - }, - { - "question": "Find all products with the attribute code 'pierce-gym-short-32-gray'.", - "answer": [ - 1017 - ], - "sql": "SELECT entity_id FROM catalog_product_entity_varchar WHERE value = 'pierce-gym-short-32-gray';", - "sql_execute_result": [ - [ - 1017 - ] - ] - }, - { - "question": "List the categories that include the keyword 'bags'.", - "answer": [ - "Bags", - "bags", - "gear/bags" - ], - "sql": "SELECT value FROM catalog_category_entity_varchar WHERE value LIKE '%bags%';", - "sql_execute_result": [ - [ - "Bags" - ], - [ - "bags" - ], - [ - "gear/bags" - ] - ] - }, - { - "question": "What is the rating value for the option code '5' from rating ID 2?", - "answer": 5, - "sql": "SELECT value FROM rating_option WHERE code = '5' AND rating_id = 2;", - "sql_execute_result": [ - [ - 5 - ] - ] - }, - { - "question": "How many shipments have been created for customer ID 1?", - "answer": 2, - "sql": "SELECT COUNT(*) FROM sales_shipment WHERE customer_id = 1;", - "sql_execute_result": [ - [ - 2 - ] - ] - }, - { - "question": "What is the total quantity shipped in shipment ID 3?", - "answer": "2.0000", - "sql": "SELECT total_qty FROM sales_shipment WHERE entity_id = 3;", - "sql_execute_result": [ - [ - "2.0000" - ] - ] - }, - { - "question": "Find the customer first name associated with order ID 86.", - "answer": "John", - "sql": "SELECT firstname FROM sales_order_address WHERE parent_id = 86 AND address_type = 'shipping';", - "sql_execute_result": [ - [ - "John" - ] - ] - }, - { - "question": "List all distinct regions from the sales order addresses.", - "answer": [ - "Michigan", - "Nevada", - "California", - "Massachusetts", - "New York", - "Arizona", - "Texas", - "Alabama", - "Georgia", - "Washington", - "Colorado", - "Florida", - "Illinois", - "Pennsylvania" - ], - "sql": "SELECT DISTINCT region FROM sales_order_address;", - "sql_execute_result": [ - [ - "Michigan" - ], - [ - "Nevada" - ], - [ - "California" - ], - [ - "Massachusetts" - ], - [ - "New York" - ], - [ - "Arizona" - ], - [ - "Texas" - ], - [ - "Alabama" - ], - [ - "Georgia" - ], - [ - "Washington" - ], - [ - "Colorado" - ], - [ - "Florida" - ], - [ - "Illinois" - ], - [ - "Pennsylvania" - ] - ] - }, - { - "question": "What is the email address of the customer with ID 5?", - "answer": "helloworld@yahoo.com", - "sql": "SELECT email FROM customer_entity WHERE entity_id = 5;", - "sql_execute_result": [ - [ - "helloworld@yahoo.com" - ] - ] - }, - { - "question": "List all orders for the customer with email david.lee@gmail.com.", - "answer": [ - 37, - 151, - 194 - ], - "sql": "SELECT entity_id FROM sales_order WHERE customer_email = 'david.lee@gmail.com';", - "sql_execute_result": [ - [ - 37 - ], - [ - 151 - ], - [ - 194 - ] - ] - }, - { - "question": "What is the total quantity ordered for the product 'Daria Bikram Pant-28-Black' in store with ID 1 on 2022-06-19?", - "answer": 1.0, - "sql": "SELECT qty_ordered FROM sales_bestsellers_aggregated_daily WHERE product_id = 1876 AND store_id = 1 AND period = '2022-06-19';", - "sql_execute_result": [ - [ - "1.0000" - ] - ] - }, - { - "question": "What is the status of the order with increment ID '000000151'?", - "answer": "canceled", - "sql": "SELECT status FROM sales_order_grid WHERE increment_id = '000000151';", - "sql_execute_result": [ - [ - "canceled" - ] - ] - }, - { - "question": "Find out the product name of the product with entity ID 1876.", - "answer": "Daria Bikram Pant-28-Black", - "sql": "SELECT product_name FROM sales_bestsellers_aggregated_daily WHERE product_id = 1876;", - "sql_execute_result": [ - [ - "Daria Bikram Pant-28-Black" - ], - [ - "Daria Bikram Pant-28-Black" - ], - [ - "Daria Bikram Pant-28-Black" - ], - [ - "Daria Bikram Pant-28-Black" - ] - ] - }, - { - "question": "Is the product with entity ID 2040 in stock?", - "answer": "Yes, the product with entity ID 2040 is in stock.", - "sql": "SELECT is_in_stock FROM cataloginventory_stock_item WHERE product_id = 2040;", - "sql_execute_result": [ - [ - 1 - ] - ] - }, - { - "question": "Find the most popular product for store ID 1 on 2022-06-19.", - "answer": "Daria Bikram Pant-28-Black", - "sql": "SELECT product_name FROM sales_bestsellers_aggregated_daily WHERE store_id = 1 AND period = '2022-06-19' ORDER BY qty_ordered DESC LIMIT 1;", - "sql_execute_result": [ - [ - "Daria Bikram Pant-28-Black" - ] - ] - }, - { - "question": "What is the creation date of the order with entity ID 177?", - "answer": "2022-07-13 18:02:34", - "sql": "SELECT created_at FROM sales_order_grid WHERE entity_id = 177;", - "sql_execute_result": [ - [ - "2022-07-13 18:02:34" - ] - ] - }, - { - "question": "What is the status code for review status with ID 2?", - "answer": "Pending", - "sql": "SELECT status_code FROM review_status WHERE status_id = 2;", - "sql_execute_result": [ - [ - "Pending" - ] - ] - }, - { - "question": "Find the email address associated with the sales order address having entity ID 543.", - "answer": "michael.nguyen@yahoo.com", - "sql": "SELECT email FROM sales_order_address WHERE entity_id = 543;", - "sql_execute_result": [ - [ - "michael.nguyen@yahoo.com" - ] - ] - }, - { - "question": "What is the price of the product with entity ID 1997?", - "answer": "24.00", - "sql": "SELECT value FROM catalog_product_entity_decimal WHERE entity_id = 1997 AND attribute_id = 77;", - "sql_execute_result": [ - [ - "24.000000" - ] - ] - }, - { - "question": "Find the product name for the product with entity ID 928.", - "answer": "Hawkeye Yoga Short-33-Black", - "sql": "SELECT value FROM catalog_product_entity_varchar WHERE entity_id = 928 AND attribute_id = 73;", - "sql_execute_result": [ - [ - "Hawkeye Yoga Short-33-Black" - ] - ] - }, - { - "question": "Which attribute is visible and used in product listing according to the catalog_eav_attribute table?", - "answer": [ - 73, - 76, - 77, - 78, - 79, - 80, - 87, - 88, - 89, - 93, - 94, - 95, - 97, - 121, - 123, - 124, - 129, - 131, - 132, - 133, - 135, - 136, - 144 - ], - "sql": "SELECT attribute_id FROM catalog_eav_attribute WHERE is_visible = 1 AND used_in_product_listing = 1;", - "sql_execute_result": [ - [ - 73 - ], - [ - 76 - ], - [ - 77 - ], - [ - 78 - ], - [ - 79 - ], - [ - 80 - ], - [ - 87 - ], - [ - 88 - ], - [ - 89 - ], - [ - 93 - ], - [ - 94 - ], - [ - 95 - ], - [ - 97 - ], - [ - 121 - ], - [ - 123 - ], - [ - 124 - ], - [ - 129 - ], - [ - 131 - ], - [ - 132 - ], - [ - 133 - ], - [ - 135 - ], - [ - 136 - ], - [ - 144 - ] - ] - }, - { - "question": "Find the postal code for the billing address of the sales order with parent ID 294.", - "answer": "90028", - "sql": "SELECT postcode FROM sales_order_address WHERE parent_id = 294 AND address_type = 'billing';", - "sql_execute_result": [ - [ - "90028" - ] - ] - }, - { - "question": "What is the value of the attribute with ID 124 for the product with entity ID 1902?", - "answer": "0", - "sql": "SELECT value FROM catalog_product_entity_varchar WHERE entity_id = 1902 AND attribute_id = 124;", - "sql_execute_result": [ - [ - "0" - ] - ] - }, - { - "question": "What is the global visibility status for the attribute with ID 78?", - "answer": 1, - "sql": "SELECT is_global FROM catalog_eav_attribute WHERE attribute_id = 78;", - "sql_execute_result": [ - [ - 1 - ] - ] - }, - { - "question": "Find the first name of the customer associated with the billing address having email 'alexander.thomas@hotmail.com'.", - "answer": "Alexander", - "sql": "SELECT firstname FROM sales_order_address WHERE email = 'alexander.thomas@hotmail.com' AND address_type = 'billing';", - "sql_execute_result": [ - [ - "Alexander" - ], - [ - "Alexander" - ], - [ - "Alexander" - ], - [ - "Alexander" - ], - [ - "Alexander" - ], - [ - "Alexander" - ], - [ - "Alexander" - ], - [ - "Alexander" - ], - [ - "Alexander" - ], - [ - "Alexander" - ] - ] - }, - { - "question": "What is the attribute ID of a catalog_eav_attribute that is searchable?", - "answer": [ - 73, - 74, - 75, - 76, - 77, - 83, - 97, - 119, - 121, - 136 - ], - "sql": "SELECT attribute_id FROM catalog_eav_attribute WHERE is_searchable = 1;", - "sql_execute_result": [ - [ - 73 - ], - [ - 74 - ], - [ - 75 - ], - [ - 76 - ], - [ - 77 - ], - [ - 83 - ], - [ - 97 - ], - [ - 119 - ], - [ - 121 - ], - [ - 136 - ] - ] - } -] \ No newline at end of file diff --git a/random_sample/generated_tasks.json.bak2 b/random_sample/generated_tasks.json.bak2 deleted file mode 100644 index 261116c..0000000 --- a/random_sample/generated_tasks.json.bak2 +++ /dev/null @@ -1,8182 +0,0 @@ -[ - { - "question": "What is the email address of the customer with ID 70?", - "answer": "emma.lopez@gmail.com", - "sql": "SELECT email FROM customer_entity WHERE entity_id = 70;", - "sql_execute_result": [ - [ - "emma.lopez@gmail.com" - ] - ] - }, - { - "question": "How many customers are in the 'General' group?", - "answer": 70, - "sql": "SELECT entity_id, firstname, lastname FROM customer_entity WHERE group_id = (SELECT customer_group_id FROM customer_group WHERE customer_group_code = 'General');", - "sql_execute_result": [ - [ - 1, - "Veronica", - "Costello" - ], - [ - 2, - "John", - "Smith" - ], - [ - 3, - "Jane", - "Doe" - ], - [ - 4, - "Bob", - "Jones" - ], - [ - 5, - "Sarah", - "Miller" - ], - [ - 6, - "Julia", - "Williams" - ], - [ - 7, - "Bob", - "Johnson" - ], - [ - 8, - "Mary", - "Martin" - ], - [ - 9, - "John", - "Lee" - ], - [ - 10, - "Jane", - "Smith" - ], - [ - 11, - "Daniel", - "Jackson" - ], - [ - 12, - "Lisa", - "Kim" - ], - [ - 13, - "Matt", - "Baker" - ], - [ - 14, - "John", - "Doe" - ], - [ - 15, - "Jane", - "Smith" - ], - [ - 16, - "Samantha", - "Jones" - ], - [ - 17, - "Lily", - "Potter" - ], - [ - 18, - "Grace", - "Nguyen" - ], - [ - 19, - "Lucy", - "Garcia" - ], - [ - 20, - "Olivia", - "Lee" - ], - [ - 21, - "Ava", - "Brown" - ], - [ - 22, - "Sophie", - "Taylor" - ], - [ - 23, - "Alex", - "Johnson" - ], - [ - 24, - "Emma", - "Davis" - ], - [ - 25, - "Adam", - "Garcia" - ], - [ - 26, - "Jennifer", - "White" - ], - [ - 27, - "Alex", - "Martin" - ], - [ - 28, - "Lisa", - "Green" - ], - [ - 29, - "Michael", - "Nguyen" - ], - [ - 30, - "David", - "Lee" - ], - [ - 31, - "Jason", - "Miller" - ], - [ - 32, - "Katie", - "Wong" - ], - [ - 33, - "Adam", - "Garcia" - ], - [ - 34, - "Brian", - "Smith" - ], - [ - 35, - "Samantha", - "Nguyen" - ], - [ - 36, - "Alexander", - "Thomas" - ], - [ - 37, - "Sam", - "Wilson" - ], - [ - 38, - "Kate", - "Jones" - ], - [ - 39, - "David", - "Smith" - ], - [ - 40, - "Jessica", - "Nguyen" - ], - [ - 41, - "Maxwell", - "Baker" - ], - [ - 42, - "Emily", - "Chen" - ], - [ - 43, - "Anna", - "Nguyen" - ], - [ - 44, - "Roberto", - "Lopez" - ], - [ - 45, - "Amanda", - "Kim" - ], - [ - 46, - "Jane", - "Doe" - ], - [ - 47, - "John", - "Smith" - ], - [ - 48, - "Jessica", - "Chang" - ], - [ - 49, - "James", - "Kim" - ], - [ - 50, - "Samantha", - "Wu" - ], - [ - 51, - "Robert", - "Johnson" - ], - [ - 52, - "Sophia", - "Kim" - ], - [ - 53, - "William", - "Chang" - ], - [ - 54, - "Jessica", - "Wong" - ], - [ - 55, - "Ethan", - "Garcia" - ], - [ - 56, - "Olivia", - "Jackson" - ], - [ - 57, - "Jacob", - "Rivera" - ], - [ - 58, - "Sophia", - "Young" - ], - [ - 59, - "Ryan", - "Tanaka" - ], - [ - 60, - "Julie", - "Nguyen" - ], - [ - 61, - "Matthew", - "Kim" - ], - [ - 62, - "Emily", - "Wilson" - ], - [ - 63, - "James", - "Baker" - ], - [ - 64, - "Isabella", - "Santos" - ], - [ - 65, - "Nathan", - "Chen" - ], - [ - 66, - "Hannah", - "Lim" - ], - [ - 67, - "Isaac", - "Rodriguez" - ], - [ - 68, - "Natalie", - "Kim" - ], - [ - 69, - "Sean", - "Miller" - ], - [ - 70, - "Emma", - "Lopez" - ] - ] - }, - { - "question": "How many items of product ID 1292 are currently in stock?", - "answer": 100, - "sql": "SELECT qty FROM cataloginventory_stock_item WHERE product_id = 1292;", - "sql_execute_result": [ - [ - "100.0000" - ] - ] - }, - { - "question": "What is the default name of the region with ID 880?", - "answer": "Medio Campidano", - "sql": "SELECT default_name FROM directory_country_region WHERE region_id = 880;", - "sql_execute_result": [ - [ - "Medio Campidano" - ] - ] - }, - { - "question": "What is the current sequence value for orders?", - "answer": 308, - "sql": "SELECT sequence_value FROM sequence_order_1 ORDER BY sequence_value DESC LIMIT 1;", - "sql_execute_result": [ - [ - 308 - ] - ] - }, - { - "question": "Find the product name for entity ID 1718 in the catalog.", - "answer": "Nona Fitness Tank-XS-Purple", - "sql": "SELECT value FROM catalog_product_entity_varchar WHERE entity_id = 1718 AND attribute_id = 73;", - "sql_execute_result": [ - [ - "Nona Fitness Tank-XS-Purple" - ] - ] - }, - { - "question": "What is the country code for the region named 'Olt'?", - "answer": "RO", - "sql": "SELECT country_id FROM directory_country_region WHERE default_name = 'Olt';", - "sql_execute_result": [ - [ - "RO" - ] - ] - }, - { - "question": "List all active sequence profiles.", - "answer": [ - { - "profile_id": 1, - "meta_id": 1 - }, - { - "profile_id": 2, - "meta_id": 2 - }, - { - "profile_id": 3, - "meta_id": 3 - }, - { - "profile_id": 4, - "meta_id": 4 - }, - { - "profile_id": 5, - "meta_id": 5 - }, - { - "profile_id": 6, - "meta_id": 6 - }, - { - "profile_id": 7, - "meta_id": 7 - }, - { - "profile_id": 8, - "meta_id": 8 - } - ], - "sql": "SELECT profile_id, meta_id FROM sales_sequence_profile WHERE is_active = 1;", - "sql_execute_result": [ - [ - 1, - 1 - ], - [ - 2, - 2 - ], - [ - 3, - 3 - ], - [ - 4, - 4 - ], - [ - 5, - 5 - ], - [ - 6, - 6 - ], - [ - 7, - 7 - ], - [ - 8, - 8 - ] - ] - }, - { - "question": "What is the sort order for the attribute option ID 95?", - "answer": 8, - "sql": "SELECT sort_order FROM eav_attribute_option WHERE option_id = 95;", - "sql_execute_result": [ - [ - 8 - ] - ] - }, - { - "question": "Find the SKU for the product with entity ID 1640.", - "answer": "Prima Compete Bra Top-S-Blue", - "sql": "SELECT value FROM catalog_product_entity_varchar WHERE entity_id = 1640 AND attribute_id = 73;", - "sql_execute_result": [ - [ - "Prima Compete Bra Top-S-Blue" - ] - ] - }, - { - "question": "Find the image path for the product with entity ID 8.", - "answer": "/w/b/wb01-black-0.jpg", - "sql": "SELECT value FROM catalog_product_entity_varchar WHERE entity_id = 8 AND attribute_id = 88;", - "sql_execute_result": [ - [ - "/w/b/wb01-black-0.jpg" - ] - ] - }, - { - "question": "What is the country ID for the region code 'GR-L'?", - "answer": "GR", - "sql": "SELECT country_id FROM directory_country_region WHERE code = 'GR-L';", - "sql_execute_result": [ - [ - "GR" - ] - ] - }, - { - "question": "What is the price of the product with SKU 'WS03-XS-Red'?", - "answer": "The price of the product with SKU 'WS03-XS-Red' is 29.00.", - "sql": "SELECT price FROM sales_invoice_item WHERE sku = 'WS03-XS-Red';", - "sql_execute_result": [ - [ - "29.0000" - ] - ] - }, - { - "question": "Find the tax amount for the product 'Minerva LumaTech\u2122 V-Tee'.", - "answer": "The tax amount for the product 'Minerva LumaTech\u2122 V-Tee' is 2.6400.", - "sql": "SELECT tax_amount FROM sales_invoice_item WHERE name = 'Minerva LumaTech™ V-Tee';", - "sql_execute_result": [ - [ - "2.6400" - ] - ] - }, - { - "question": "What is the ISO3 code for the country with ISO2 code 'TT'?", - "answer": "TTO", - "sql": "SELECT iso3_code FROM directory_country WHERE iso2_code = 'TT';", - "sql_execute_result": [ - [ - "TTO" - ] - ] - }, - { - "question": "How many products have a decimal attribute value of 1.000000?", - "answer": 1847, - "sql": "SELECT sku FROM catalog_product_entity WHERE entity_id IN (SELECT entity_id FROM catalog_product_entity_decimal WHERE value = '1.000000');", - "sql_execute_result": [ - [ - "MH01-L-Black" - ], - [ - "MH01-L-Gray" - ], - [ - "MH01-L-Orange" - ], - [ - "MH01-M-Black" - ], - [ - "MH01-M-Gray" - ], - [ - "MH01-M-Orange" - ], - [ - "MH01-S-Black" - ], - [ - "MH01-S-Gray" - ], - [ - "MH01-S-Orange" - ], - [ - "MH01-XL-Black" - ], - [ - "MH01-XL-Gray" - ], - [ - "MH01-XL-Orange" - ], - [ - "MH01-XS-Black" - ], - [ - "MH01-XS-Gray" - ], - [ - "MH01-XS-Orange" - ], - [ - "MH02-L-Black" - ], - [ - "MH02-L-Purple" - ], - [ - "MH02-L-Red" - ], - [ - "MH02-M-Black" - ], - [ - "MH02-M-Purple" - ], - [ - "MH02-M-Red" - ], - [ - "MH02-S-Black" - ], - [ - "MH02-S-Purple" - ], - [ - "MH02-S-Red" - ], - [ - "MH02-XL-Black" - ], - [ - "MH02-XL-Purple" - ], - [ - "MH02-XL-Red" - ], - [ - "MH02-XS-Black" - ], - [ - "MH02-XS-Purple" - ], - [ - "MH02-XS-Red" - ], - [ - "MH03-L-Black" - ], - [ - "MH03-L-Blue" - ], - [ - "MH03-L-Green" - ], - [ - "MH03-M-Black" - ], - [ - "MH03-M-Blue" - ], - [ - "MH03-M-Green" - ], - [ - "MH03-S-Black" - ], - [ - "MH03-S-Blue" - ], - [ - "MH03-S-Green" - ], - [ - "MH03-XL-Black" - ], - [ - "MH03-XL-Blue" - ], - [ - "MH03-XL-Green" - ], - [ - "MH03-XS-Black" - ], - [ - "MH03-XS-Blue" - ], - [ - "MH03-XS-Green" - ], - [ - "MH04-L-Green" - ], - [ - "MH04-L-White" - ], - [ - "MH04-L-Yellow" - ], - [ - "MH04-M-Green" - ], - [ - "MH04-M-White" - ], - [ - "MH04-M-Yellow" - ], - [ - "MH04-S-Green" - ], - [ - "MH04-S-White" - ], - [ - "MH04-S-Yellow" - ], - [ - "MH04-XL-Green" - ], - [ - "MH04-XL-White" - ], - [ - "MH04-XL-Yellow" - ], - [ - "MH04-XS-Green" - ], - [ - "MH04-XS-White" - ], - [ - "MH04-XS-Yellow" - ], - [ - "MH05-L-Green" - ], - [ - "MH05-L-Red" - ], - [ - "MH05-L-White" - ], - [ - "MH05-M-Green" - ], - [ - "MH05-M-Red" - ], - [ - "MH05-M-White" - ], - [ - "MH05-S-Green" - ], - [ - "MH05-S-Red" - ], - [ - "MH05-S-White" - ], - [ - "MH05-XL-Green" - ], - [ - "MH05-XL-Red" - ], - [ - "MH05-XL-White" - ], - [ - "MH05-XS-Green" - ], - [ - "MH05-XS-Red" - ], - [ - "MH05-XS-White" - ], - [ - "MH06-L-Black" - ], - [ - "MH06-L-Blue" - ], - [ - "MH06-L-Purple" - ], - [ - "MH06-M-Black" - ], - [ - "MH06-M-Blue" - ], - [ - "MH06-M-Purple" - ], - [ - "MH06-S-Black" - ], - [ - "MH06-S-Blue" - ], - [ - "MH06-S-Purple" - ], - [ - "MH06-XL-Black" - ], - [ - "MH06-XL-Blue" - ], - [ - "MH06-XL-Purple" - ], - [ - "MH06-XS-Black" - ], - [ - "MH06-XS-Blue" - ], - [ - "MH06-XS-Purple" - ], - [ - "MH07-L-Black" - ], - [ - "MH07-L-Gray" - ], - [ - "MH07-L-Green" - ], - [ - "MH07-M-Black" - ], - [ - "MH07-M-Gray" - ], - [ - "MH07-M-Green" - ], - [ - "MH07-S-Black" - ], - [ - "MH07-S-Gray" - ], - [ - "MH07-S-Green" - ], - [ - "MH07-XL-Black" - ], - [ - "MH07-XL-Gray" - ], - [ - "MH07-XL-Green" - ], - [ - "MH07-XS-Black" - ], - [ - "MH07-XS-Gray" - ], - [ - "MH07-XS-Green" - ], - [ - "MH08-L-Brown" - ], - [ - "MH08-L-Purple" - ], - [ - "MH08-L-Red" - ], - [ - "MH08-M-Brown" - ], - [ - "MH08-M-Purple" - ], - [ - "MH08-M-Red" - ], - [ - "MH08-S-Brown" - ], - [ - "MH08-S-Purple" - ], - [ - "MH08-S-Red" - ], - [ - "MH08-XL-Brown" - ], - [ - "MH08-XL-Purple" - ], - [ - "MH08-XL-Red" - ], - [ - "MH08-XS-Brown" - ], - [ - "MH08-XS-Purple" - ], - [ - "MH08-XS-Red" - ], - [ - "MH09-L-Blue" - ], - [ - "MH09-L-Green" - ], - [ - "MH09-L-Red" - ], - [ - "MH09-M-Blue" - ], - [ - "MH09-M-Green" - ], - [ - "MH09-M-Red" - ], - [ - "MH09-S-Blue" - ], - [ - "MH09-S-Green" - ], - [ - "MH09-S-Red" - ], - [ - "MH09-XL-Blue" - ], - [ - "MH09-XL-Green" - ], - [ - "MH09-XL-Red" - ], - [ - "MH09-XS-Blue" - ], - [ - "MH09-XS-Green" - ], - [ - "MH09-XS-Red" - ], - [ - "MH10-L-Black" - ], - [ - "MH10-L-Blue" - ], - [ - "MH10-L-Red" - ], - [ - "MH10-M-Black" - ], - [ - "MH10-M-Blue" - ], - [ - "MH10-M-Red" - ], - [ - "MH10-S-Black" - ], - [ - "MH10-S-Blue" - ], - [ - "MH10-S-Red" - ], - [ - "MH10-XL-Black" - ], - [ - "MH10-XL-Blue" - ], - [ - "MH10-XL-Red" - ], - [ - "MH10-XS-Black" - ], - [ - "MH10-XS-Blue" - ], - [ - "MH10-XS-Red" - ], - [ - "MH11-L-Orange" - ], - [ - "MH11-L-Red" - ], - [ - "MH11-L-White" - ], - [ - "MH11-M-Orange" - ], - [ - "MH11-M-Red" - ], - [ - "MH11-M-White" - ], - [ - "MH11-S-Orange" - ], - [ - "MH11-S-Red" - ], - [ - "MH11-S-White" - ], - [ - "MH11-XL-Orange" - ], - [ - "MH11-XL-Red" - ], - [ - "MH11-XL-White" - ], - [ - "MH11-XS-Orange" - ], - [ - "MH11-XS-Red" - ], - [ - "MH11-XS-White" - ], - [ - "MH12-L-Blue" - ], - [ - "MH12-L-Green" - ], - [ - "MH12-L-Red" - ], - [ - "MH12-M-Blue" - ], - [ - "MH12-M-Green" - ], - [ - "MH12-M-Red" - ], - [ - "MH12-S-Blue" - ], - [ - "MH12-S-Green" - ], - [ - "MH12-S-Red" - ], - [ - "MH12-XL-Blue" - ], - [ - "MH12-XL-Green" - ], - [ - "MH12-XL-Red" - ], - [ - "MH12-XS-Blue" - ], - [ - "MH12-XS-Green" - ], - [ - "MH12-XS-Red" - ], - [ - "MH13-L-Blue" - ], - [ - "MH13-L-Green" - ], - [ - "MH13-L-Lavender" - ], - [ - "MH13-M-Blue" - ], - [ - "MH13-M-Green" - ], - [ - "MH13-M-Lavender" - ], - [ - "MH13-S-Blue" - ], - [ - "MH13-S-Green" - ], - [ - "MH13-S-Lavender" - ], - [ - "MH13-XL-Blue" - ], - [ - "MH13-XL-Green" - ], - [ - "MH13-XL-Lavender" - ], - [ - "MH13-XS-Blue" - ], - [ - "MH13-XS-Green" - ], - [ - "MH13-XS-Lavender" - ], - [ - "MJ01-L-Orange" - ], - [ - "MJ01-L-Red" - ], - [ - "MJ01-L-Yellow" - ], - [ - "MJ01-M-Orange" - ], - [ - "MJ01-M-Red" - ], - [ - "MJ01-M-Yellow" - ], - [ - "MJ01-S-Orange" - ], - [ - "MJ01-S-Red" - ], - [ - "MJ01-S-Yellow" - ], - [ - "MJ01-XL-Orange" - ], - [ - "MJ01-XL-Red" - ], - [ - "MJ01-XL-Yellow" - ], - [ - "MJ01-XS-Orange" - ], - [ - "MJ01-XS-Red" - ], - [ - "MJ01-XS-Yellow" - ], - [ - "MJ02-L-Green" - ], - [ - "MJ02-L-Orange" - ], - [ - "MJ02-L-Red" - ], - [ - "MJ02-M-Green" - ], - [ - "MJ02-M-Orange" - ], - [ - "MJ02-M-Red" - ], - [ - "MJ02-S-Green" - ], - [ - "MJ02-S-Orange" - ], - [ - "MJ02-S-Red" - ], - [ - "MJ02-XL-Green" - ], - [ - "MJ02-XL-Orange" - ], - [ - "MJ02-XL-Red" - ], - [ - "MJ02-XS-Green" - ], - [ - "MJ02-XS-Orange" - ], - [ - "MJ02-XS-Red" - ], - [ - "MJ03-L-Black" - ], - [ - "MJ03-L-Green" - ], - [ - "MJ03-L-Red" - ], - [ - "MJ03-M-Black" - ], - [ - "MJ03-M-Green" - ], - [ - "MJ03-M-Red" - ], - [ - "MJ03-S-Black" - ], - [ - "MJ03-S-Green" - ], - [ - "MJ03-S-Red" - ], - [ - "MJ03-XL-Black" - ], - [ - "MJ03-XL-Green" - ], - [ - "MJ03-XL-Red" - ], - [ - "MJ03-XS-Black" - ], - [ - "MJ03-XS-Green" - ], - [ - "MJ03-XS-Red" - ], - [ - "MJ04-L-Black" - ], - [ - "MJ04-L-Blue" - ], - [ - "MJ04-L-Purple" - ], - [ - "MJ04-M-Black" - ], - [ - "MJ04-M-Blue" - ], - [ - "MJ04-M-Purple" - ], - [ - "MJ04-S-Black" - ], - [ - "MJ04-S-Blue" - ], - [ - "MJ04-S-Purple" - ], - [ - "MJ04-XL-Black" - ], - [ - "MJ04-XL-Blue" - ], - [ - "MJ04-XL-Purple" - ], - [ - "MJ04-XS-Black" - ], - [ - "MJ04-XS-Blue" - ], - [ - "MJ04-XS-Purple" - ], - [ - "MJ06-L-Blue" - ], - [ - "MJ06-L-Green" - ], - [ - "MJ06-L-Purple" - ], - [ - "MJ06-M-Blue" - ], - [ - "MJ06-M-Green" - ], - [ - "MJ06-M-Purple" - ], - [ - "MJ06-S-Blue" - ], - [ - "MJ06-S-Green" - ], - [ - "MJ06-S-Purple" - ], - [ - "MJ06-XL-Blue" - ], - [ - "MJ06-XL-Green" - ], - [ - "MJ06-XL-Purple" - ], - [ - "MJ06-XS-Blue" - ], - [ - "MJ06-XS-Green" - ], - [ - "MJ06-XS-Purple" - ], - [ - "MJ07-L-Black" - ], - [ - "MJ07-L-Red" - ], - [ - "MJ07-L-Yellow" - ], - [ - "MJ07-M-Black" - ], - [ - "MJ07-M-Red" - ], - [ - "MJ07-M-Yellow" - ], - [ - "MJ07-S-Black" - ], - [ - "MJ07-S-Red" - ], - [ - "MJ07-S-Yellow" - ], - [ - "MJ07-XL-Black" - ], - [ - "MJ07-XL-Red" - ], - [ - "MJ07-XL-Yellow" - ], - [ - "MJ07-XS-Black" - ], - [ - "MJ07-XS-Red" - ], - [ - "MJ07-XS-Yellow" - ], - [ - "MJ08-L-Blue" - ], - [ - "MJ08-L-Gray" - ], - [ - "MJ08-L-Green" - ], - [ - "MJ08-M-Blue" - ], - [ - "MJ08-M-Gray" - ], - [ - "MJ08-M-Green" - ], - [ - "MJ08-S-Blue" - ], - [ - "MJ08-S-Gray" - ], - [ - "MJ08-S-Green" - ], - [ - "MJ08-XL-Blue" - ], - [ - "MJ08-XL-Gray" - ], - [ - "MJ08-XL-Green" - ], - [ - "MJ08-XS-Blue" - ], - [ - "MJ08-XS-Gray" - ], - [ - "MJ08-XS-Green" - ], - [ - "MJ09-L-Blue" - ], - [ - "MJ09-L-White" - ], - [ - "MJ09-L-Yellow" - ], - [ - "MJ09-M-Blue" - ], - [ - "MJ09-M-White" - ], - [ - "MJ09-M-Yellow" - ], - [ - "MJ09-S-Blue" - ], - [ - "MJ09-S-White" - ], - [ - "MJ09-S-Yellow" - ], - [ - "MJ09-XL-Blue" - ], - [ - "MJ09-XL-White" - ], - [ - "MJ09-XL-Yellow" - ], - [ - "MJ09-XS-Blue" - ], - [ - "MJ09-XS-White" - ], - [ - "MJ09-XS-Yellow" - ], - [ - "MJ10-L-Black" - ], - [ - "MJ10-L-Orange" - ], - [ - "MJ10-L-Red" - ], - [ - "MJ10-M-Black" - ], - [ - "MJ10-M-Orange" - ], - [ - "MJ10-M-Red" - ], - [ - "MJ10-S-Black" - ], - [ - "MJ10-S-Orange" - ], - [ - "MJ10-S-Red" - ], - [ - "MJ10-XL-Black" - ], - [ - "MJ10-XL-Orange" - ], - [ - "MJ10-XL-Red" - ], - [ - "MJ10-XS-Black" - ], - [ - "MJ10-XS-Orange" - ], - [ - "MJ10-XS-Red" - ], - [ - "MJ11-L-Black" - ], - [ - "MJ11-L-Green" - ], - [ - "MJ11-L-Red" - ], - [ - "MJ11-M-Black" - ], - [ - "MJ11-M-Green" - ], - [ - "MJ11-M-Red" - ], - [ - "MJ11-S-Black" - ], - [ - "MJ11-S-Green" - ], - [ - "MJ11-S-Red" - ], - [ - "MJ11-XL-Black" - ], - [ - "MJ11-XL-Green" - ], - [ - "MJ11-XL-Red" - ], - [ - "MJ11-XS-Black" - ], - [ - "MJ11-XS-Green" - ], - [ - "MJ11-XS-Red" - ], - [ - "MJ12-L-Black" - ], - [ - "MJ12-L-Blue" - ], - [ - "MJ12-L-Orange" - ], - [ - "MJ12-M-Black" - ], - [ - "MJ12-M-Blue" - ], - [ - "MJ12-M-Orange" - ], - [ - "MJ12-S-Black" - ], - [ - "MJ12-S-Blue" - ], - [ - "MJ12-S-Orange" - ], - [ - "MJ12-XL-Black" - ], - [ - "MJ12-XL-Blue" - ], - [ - "MJ12-XL-Orange" - ], - [ - "MJ12-XS-Black" - ], - [ - "MJ12-XS-Blue" - ], - [ - "MJ12-XS-Orange" - ], - [ - "MP01-32-Black" - ], - [ - "MP01-32-Gray" - ], - [ - "MP01-32-Purple" - ], - [ - "MP01-33-Black" - ], - [ - "MP01-33-Gray" - ], - [ - "MP01-33-Purple" - ], - [ - "MP01-34-Black" - ], - [ - "MP01-34-Gray" - ], - [ - "MP01-34-Purple" - ], - [ - "MP01-36-Black" - ], - [ - "MP01-36-Gray" - ], - [ - "MP01-36-Purple" - ], - [ - "MP02-32-Blue" - ], - [ - "MP02-32-Gray" - ], - [ - "MP02-32-Red" - ], - [ - "MP02-33-Blue" - ], - [ - "MP02-33-Gray" - ], - [ - "MP02-33-Red" - ], - [ - "MP02-34-Blue" - ], - [ - "MP02-34-Gray" - ], - [ - "MP02-34-Red" - ], - [ - "MP02-36-Blue" - ], - [ - "MP02-36-Gray" - ], - [ - "MP02-36-Red" - ], - [ - "MP03-32-Blue" - ], - [ - "MP03-32-Green" - ], - [ - "MP03-32-Red" - ], - [ - "MP03-33-Blue" - ], - [ - "MP03-33-Green" - ], - [ - "MP03-33-Red" - ], - [ - "MP03-34-Blue" - ], - [ - "MP03-34-Green" - ], - [ - "MP03-34-Red" - ], - [ - "MP03-36-Blue" - ], - [ - "MP03-36-Green" - ], - [ - "MP03-36-Red" - ], - [ - "MP04-32-Black" - ], - [ - "MP04-32-Gray" - ], - [ - "MP04-32-Green" - ], - [ - "MP04-33-Black" - ], - [ - "MP04-33-Gray" - ], - [ - "MP04-33-Green" - ], - [ - "MP04-34-Black" - ], - [ - "MP04-34-Gray" - ], - [ - "MP04-34-Green" - ], - [ - "MP04-36-Black" - ], - [ - "MP04-36-Gray" - ], - [ - "MP04-36-Green" - ], - [ - "MP05-32-Black" - ], - [ - "MP05-32-Blue" - ], - [ - "MP05-32-Green" - ], - [ - "MP05-33-Black" - ], - [ - "MP05-33-Blue" - ], - [ - "MP05-33-Green" - ], - [ - "MP05-34-Black" - ], - [ - "MP05-34-Blue" - ], - [ - "MP05-34-Green" - ], - [ - "MP05-36-Black" - ], - [ - "MP05-36-Blue" - ], - [ - "MP05-36-Green" - ], - [ - "MP06-32-Gray" - ], - [ - "MP06-32-Green" - ], - [ - "MP06-32-Orange" - ], - [ - "MP06-33-Gray" - ], - [ - "MP06-33-Green" - ], - [ - "MP06-33-Orange" - ], - [ - "MP06-34-Gray" - ], - [ - "MP06-34-Green" - ], - [ - "MP06-34-Orange" - ], - [ - "MP06-36-Gray" - ], - [ - "MP06-36-Green" - ], - [ - "MP06-36-Orange" - ], - [ - "MP07-32-Black" - ], - [ - "MP07-32-Blue" - ], - [ - "MP07-32-Purple" - ], - [ - "MP07-33-Black" - ], - [ - "MP07-33-Blue" - ], - [ - "MP07-33-Purple" - ], - [ - "MP07-34-Black" - ], - [ - "MP07-34-Blue" - ], - [ - "MP07-34-Purple" - ], - [ - "MP07-36-Black" - ], - [ - "MP07-36-Blue" - ], - [ - "MP07-36-Purple" - ], - [ - "MP08-32-Blue" - ], - [ - "MP08-32-Green" - ], - [ - "MP08-32-Red" - ], - [ - "MP08-33-Blue" - ], - [ - "MP08-33-Green" - ], - [ - "MP08-33-Red" - ], - [ - "MP08-34-Blue" - ], - [ - "MP08-34-Green" - ], - [ - "MP08-34-Red" - ], - [ - "MP08-36-Blue" - ], - [ - "MP08-36-Green" - ], - [ - "MP08-36-Red" - ], - [ - "MP09-32-Black" - ], - [ - "MP09-32-Blue" - ], - [ - "MP09-32-Red" - ], - [ - "MP09-33-Black" - ], - [ - "MP09-33-Blue" - ], - [ - "MP09-33-Red" - ], - [ - "MP09-34-Black" - ], - [ - "MP09-34-Blue" - ], - [ - "MP09-34-Red" - ], - [ - "MP09-36-Black" - ], - [ - "MP09-36-Blue" - ], - [ - "MP09-36-Red" - ], - [ - "MP10-32-Black" - ], - [ - "MP10-32-Blue" - ], - [ - "MP10-32-Green" - ], - [ - "MP10-33-Black" - ], - [ - "MP10-33-Blue" - ], - [ - "MP10-33-Green" - ], - [ - "MP10-34-Black" - ], - [ - "MP10-34-Blue" - ], - [ - "MP10-34-Green" - ], - [ - "MP10-36-Black" - ], - [ - "MP10-36-Blue" - ], - [ - "MP10-36-Green" - ], - [ - "MP11-32-Blue" - ], - [ - "MP11-32-Brown" - ], - [ - "MP11-32-Green" - ], - [ - "MP11-33-Blue" - ], - [ - "MP11-33-Brown" - ], - [ - "MP11-33-Green" - ], - [ - "MP11-34-Blue" - ], - [ - "MP11-34-Brown" - ], - [ - "MP11-34-Green" - ], - [ - "MP11-36-Blue" - ], - [ - "MP11-36-Brown" - ], - [ - "MP11-36-Green" - ], - [ - "MP12-32-Black" - ], - [ - "MP12-32-Blue" - ], - [ - "MP12-32-Red" - ], - [ - "MP12-33-Black" - ], - [ - "MP12-33-Blue" - ], - [ - "MP12-33-Red" - ], - [ - "MP12-34-Black" - ], - [ - "MP12-34-Blue" - ], - [ - "MP12-34-Red" - ], - [ - "MP12-36-Black" - ], - [ - "MP12-36-Blue" - ], - [ - "MP12-36-Red" - ], - [ - "MS01-L-Black" - ], - [ - "MS01-L-Brown" - ], - [ - "MS01-L-Yellow" - ], - [ - "MS01-M-Black" - ], - [ - "MS01-M-Brown" - ], - [ - "MS01-M-Yellow" - ], - [ - "MS01-S-Black" - ], - [ - "MS01-S-Brown" - ], - [ - "MS01-S-Yellow" - ], - [ - "MS01-XL-Black" - ], - [ - "MS01-XL-Brown" - ], - [ - "MS01-XL-Yellow" - ], - [ - "MS01-XS-Black" - ], - [ - "MS01-XS-Brown" - ], - [ - "MS01-XS-Yellow" - ], - [ - "MS02-L-Black" - ], - [ - "MS02-L-Blue" - ], - [ - "MS02-L-Gray" - ], - [ - "MS02-M-Black" - ], - [ - "MS02-M-Blue" - ], - [ - "MS02-M-Gray" - ], - [ - "MS02-S-Black" - ], - [ - "MS02-S-Blue" - ], - [ - "MS02-S-Gray" - ], - [ - "MS02-XL-Black" - ], - [ - "MS02-XL-Blue" - ], - [ - "MS02-XL-Gray" - ], - [ - "MS02-XS-Black" - ], - [ - "MS02-XS-Blue" - ], - [ - "MS02-XS-Gray" - ], - [ - "MS03-L-Gray" - ], - [ - "MS03-L-Green" - ], - [ - "MS03-L-Orange" - ], - [ - "MS03-M-Gray" - ], - [ - "MS03-M-Green" - ], - [ - "MS03-M-Orange" - ], - [ - "MS03-S-Gray" - ], - [ - "MS03-S-Green" - ], - [ - "MS03-S-Orange" - ], - [ - "MS03-XL-Gray" - ], - [ - "MS03-XL-Green" - ], - [ - "MS03-XL-Orange" - ], - [ - "MS03-XS-Gray" - ], - [ - "MS03-XS-Green" - ], - [ - "MS03-XS-Orange" - ], - [ - "MS04-L-Black" - ], - [ - "MS04-L-Orange" - ], - [ - "MS04-L-Red" - ], - [ - "MS04-M-Black" - ], - [ - "MS04-M-Orange" - ], - [ - "MS04-M-Red" - ], - [ - "MS04-S-Black" - ], - [ - "MS04-S-Orange" - ], - [ - "MS04-S-Red" - ], - [ - "MS04-XL-Black" - ], - [ - "MS04-XL-Orange" - ], - [ - "MS04-XL-Red" - ], - [ - "MS04-XS-Black" - ], - [ - "MS04-XS-Orange" - ], - [ - "MS04-XS-Red" - ], - [ - "MS05-L-Black" - ], - [ - "MS05-L-Blue" - ], - [ - "MS05-L-Purple" - ], - [ - "MS05-M-Black" - ], - [ - "MS05-M-Blue" - ], - [ - "MS05-M-Purple" - ], - [ - "MS05-S-Black" - ], - [ - "MS05-S-Blue" - ], - [ - "MS05-S-Purple" - ], - [ - "MS05-XL-Black" - ], - [ - "MS05-XL-Blue" - ], - [ - "MS05-XL-Purple" - ], - [ - "MS05-XS-Black" - ], - [ - "MS05-XS-Blue" - ], - [ - "MS05-XS-Purple" - ], - [ - "MS06-L-Blue" - ], - [ - "MS06-L-Green" - ], - [ - "MS06-L-Yellow" - ], - [ - "MS06-M-Blue" - ], - [ - "MS06-M-Green" - ], - [ - "MS06-M-Yellow" - ], - [ - "MS06-S-Blue" - ], - [ - "MS06-S-Green" - ], - [ - "MS06-S-Yellow" - ], - [ - "MS06-XL-Blue" - ], - [ - "MS06-XL-Green" - ], - [ - "MS06-XL-Yellow" - ], - [ - "MS06-XS-Blue" - ], - [ - "MS06-XS-Green" - ], - [ - "MS06-XS-Yellow" - ], - [ - "MS07-L-Black" - ], - [ - "MS07-L-Green" - ], - [ - "MS07-L-White" - ], - [ - "MS07-M-Black" - ], - [ - "MS07-M-Green" - ], - [ - "MS07-M-White" - ], - [ - "MS07-S-Black" - ], - [ - "MS07-S-Green" - ], - [ - "MS07-S-White" - ], - [ - "MS07-XL-Black" - ], - [ - "MS07-XL-Green" - ], - [ - "MS07-XL-White" - ], - [ - "MS07-XS-Black" - ], - [ - "MS07-XS-Green" - ], - [ - "MS07-XS-White" - ], - [ - "MS08-L-Black" - ], - [ - "MS08-L-Blue" - ], - [ - "MS08-L-Red" - ], - [ - "MS08-M-Black" - ], - [ - "MS08-M-Blue" - ], - [ - "MS08-M-Red" - ], - [ - "MS08-S-Black" - ], - [ - "MS08-S-Blue" - ], - [ - "MS08-S-Red" - ], - [ - "MS08-XL-Black" - ], - [ - "MS08-XL-Blue" - ], - [ - "MS08-XL-Red" - ], - [ - "MS08-XS-Black" - ], - [ - "MS08-XS-Blue" - ], - [ - "MS08-XS-Red" - ], - [ - "MS09-L-Black" - ], - [ - "MS09-L-Blue" - ], - [ - "MS09-L-Red" - ], - [ - "MS09-M-Black" - ], - [ - "MS09-M-Blue" - ], - [ - "MS09-M-Red" - ], - [ - "MS09-S-Black" - ], - [ - "MS09-S-Blue" - ], - [ - "MS09-S-Red" - ], - [ - "MS09-XL-Black" - ], - [ - "MS09-XL-Blue" - ], - [ - "MS09-XL-Red" - ], - [ - "MS09-XS-Black" - ], - [ - "MS09-XS-Blue" - ], - [ - "MS09-XS-Red" - ], - [ - "MS10-L-Black" - ], - [ - "MS10-L-Blue" - ], - [ - "MS10-L-Red" - ], - [ - "MS10-M-Black" - ], - [ - "MS10-M-Blue" - ], - [ - "MS10-M-Red" - ], - [ - "MS10-S-Black" - ], - [ - "MS10-S-Blue" - ], - [ - "MS10-S-Red" - ], - [ - "MS10-XL-Black" - ], - [ - "MS10-XL-Blue" - ], - [ - "MS10-XL-Red" - ], - [ - "MS10-XS-Black" - ], - [ - "MS10-XS-Blue" - ], - [ - "MS10-XS-Red" - ], - [ - "MS11-L-Blue" - ], - [ - "MS11-L-Green" - ], - [ - "MS11-L-Yellow" - ], - [ - "MS11-M-Blue" - ], - [ - "MS11-M-Green" - ], - [ - "MS11-M-Yellow" - ], - [ - "MS11-S-Blue" - ], - [ - "MS11-S-Green" - ], - [ - "MS11-S-Yellow" - ], - [ - "MS11-XL-Blue" - ], - [ - "MS11-XL-Green" - ], - [ - "MS11-XL-Yellow" - ], - [ - "MS11-XS-Blue" - ], - [ - "MS11-XS-Green" - ], - [ - "MS11-XS-Yellow" - ], - [ - "MS12-L-Black" - ], - [ - "MS12-L-Blue" - ], - [ - "MS12-L-Red" - ], - [ - "MS12-M-Black" - ], - [ - "MS12-M-Blue" - ], - [ - "MS12-M-Red" - ], - [ - "MS12-S-Black" - ], - [ - "MS12-S-Blue" - ], - [ - "MS12-S-Red" - ], - [ - "MS12-XL-Black" - ], - [ - "MS12-XL-Blue" - ], - [ - "MS12-XL-Red" - ], - [ - "MS12-XS-Black" - ], - [ - "MS12-XS-Blue" - ], - [ - "MS12-XS-Red" - ], - [ - "MSH01-32-Black" - ], - [ - "MSH01-32-Blue" - ], - [ - "MSH01-32-Red" - ], - [ - "MSH01-33-Black" - ], - [ - "MSH01-33-Blue" - ], - [ - "MSH01-33-Red" - ], - [ - "MSH01-34-Black" - ], - [ - "MSH01-34-Blue" - ], - [ - "MSH01-34-Red" - ], - [ - "MSH01-36-Black" - ], - [ - "MSH01-36-Blue" - ], - [ - "MSH01-36-Red" - ], - [ - "MSH02-32-Black" - ], - [ - "MSH02-33-Black" - ], - [ - "MSH02-34-Black" - ], - [ - "MSH02-36-Black" - ], - [ - "MSH03-32-Black" - ], - [ - "MSH03-32-Blue" - ], - [ - "MSH03-32-Green" - ], - [ - "MSH03-33-Black" - ], - [ - "MSH03-33-Blue" - ], - [ - "MSH03-33-Green" - ], - [ - "MSH03-34-Black" - ], - [ - "MSH03-34-Blue" - ], - [ - "MSH03-34-Green" - ], - [ - "MSH03-36-Black" - ], - [ - "MSH03-36-Blue" - ], - [ - "MSH03-36-Green" - ], - [ - "MSH04-32-Gray" - ], - [ - "MSH04-32-Purple" - ], - [ - "MSH04-32-Yellow" - ], - [ - "MSH04-33-Gray" - ], - [ - "MSH04-33-Purple" - ], - [ - "MSH04-33-Yellow" - ], - [ - "MSH04-34-Gray" - ], - [ - "MSH04-34-Purple" - ], - [ - "MSH04-34-Yellow" - ], - [ - "MSH04-36-Gray" - ], - [ - "MSH04-36-Purple" - ], - [ - "MSH04-36-Yellow" - ], - [ - "MSH05-32-Black" - ], - [ - "MSH05-32-Blue" - ], - [ - "MSH05-32-Gray" - ], - [ - "MSH05-33-Black" - ], - [ - "MSH05-33-Blue" - ], - [ - "MSH05-33-Gray" - ], - [ - "MSH05-34-Black" - ], - [ - "MSH05-34-Blue" - ], - [ - "MSH05-34-Gray" - ], - [ - "MSH05-36-Black" - ], - [ - "MSH05-36-Blue" - ], - [ - "MSH05-36-Gray" - ], - [ - "MSH06-32-Blue" - ], - [ - "MSH06-32-Gray" - ], - [ - "MSH06-32-Red" - ], - [ - "MSH06-33-Blue" - ], - [ - "MSH06-33-Gray" - ], - [ - "MSH06-33-Red" - ], - [ - "MSH06-34-Blue" - ], - [ - "MSH06-34-Gray" - ], - [ - "MSH06-34-Red" - ], - [ - "MSH06-36-Blue" - ], - [ - "MSH06-36-Gray" - ], - [ - "MSH06-36-Red" - ], - [ - "MSH07-32-Black" - ], - [ - "MSH07-32-Blue" - ], - [ - "MSH07-32-Purple" - ], - [ - "MSH07-33-Black" - ], - [ - "MSH07-33-Blue" - ], - [ - "MSH07-33-Purple" - ], - [ - "MSH07-34-Black" - ], - [ - "MSH07-34-Blue" - ], - [ - "MSH07-34-Purple" - ], - [ - "MSH07-36-Black" - ], - [ - "MSH07-36-Blue" - ], - [ - "MSH07-36-Purple" - ], - [ - "MSH08-32-Black" - ], - [ - "MSH08-32-Blue" - ], - [ - "MSH08-32-Green" - ], - [ - "MSH08-33-Black" - ], - [ - "MSH08-33-Blue" - ], - [ - "MSH08-33-Green" - ], - [ - "MSH08-34-Black" - ], - [ - "MSH08-34-Blue" - ], - [ - "MSH08-34-Green" - ], - [ - "MSH08-36-Black" - ], - [ - "MSH08-36-Blue" - ], - [ - "MSH08-36-Green" - ], - [ - "MSH09-32-Black" - ], - [ - "MSH09-32-Blue" - ], - [ - "MSH09-32-Green" - ], - [ - "MSH09-33-Black" - ], - [ - "MSH09-33-Blue" - ], - [ - "MSH09-33-Green" - ], - [ - "MSH09-34-Black" - ], - [ - "MSH09-34-Blue" - ], - [ - "MSH09-34-Green" - ], - [ - "MSH09-36-Black" - ], - [ - "MSH09-36-Blue" - ], - [ - "MSH09-36-Green" - ], - [ - "MSH10-32-Blue" - ], - [ - "MSH10-32-Green" - ], - [ - "MSH10-32-Purple" - ], - [ - "MSH10-33-Blue" - ], - [ - "MSH10-33-Green" - ], - [ - "MSH10-33-Purple" - ], - [ - "MSH10-34-Blue" - ], - [ - "MSH10-34-Green" - ], - [ - "MSH10-34-Purple" - ], - [ - "MSH10-36-Blue" - ], - [ - "MSH10-36-Green" - ], - [ - "MSH10-36-Purple" - ], - [ - "MSH11-32-Black" - ], - [ - "MSH11-32-Blue" - ], - [ - "MSH11-32-Red" - ], - [ - "MSH11-33-Black" - ], - [ - "MSH11-33-Blue" - ], - [ - "MSH11-33-Red" - ], - [ - "MSH11-34-Black" - ], - [ - "MSH11-34-Blue" - ], - [ - "MSH11-34-Red" - ], - [ - "MSH11-36-Black" - ], - [ - "MSH11-36-Blue" - ], - [ - "MSH11-36-Red" - ], - [ - "MSH12-32-Black" - ], - [ - "MSH12-32-Gray" - ], - [ - "MSH12-32-Red" - ], - [ - "MSH12-33-Black" - ], - [ - "MSH12-33-Gray" - ], - [ - "MSH12-33-Red" - ], - [ - "MSH12-34-Black" - ], - [ - "MSH12-34-Gray" - ], - [ - "MSH12-34-Red" - ], - [ - "MSH12-36-Black" - ], - [ - "MSH12-36-Gray" - ], - [ - "MSH12-36-Red" - ], - [ - "MT01-L-Gray" - ], - [ - "MT01-L-Orange" - ], - [ - "MT01-L-Red" - ], - [ - "MT01-M-Gray" - ], - [ - "MT01-M-Orange" - ], - [ - "MT01-M-Red" - ], - [ - "MT01-S-Gray" - ], - [ - "MT01-S-Orange" - ], - [ - "MT01-S-Red" - ], - [ - "MT01-XL-Gray" - ], - [ - "MT01-XL-Orange" - ], - [ - "MT01-XL-Red" - ], - [ - "MT01-XS-Gray" - ], - [ - "MT01-XS-Orange" - ], - [ - "MT01-XS-Red" - ], - [ - "MT02-L-Gray" - ], - [ - "MT02-L-Red" - ], - [ - "MT02-L-White" - ], - [ - "MT02-M-Gray" - ], - [ - "MT02-M-Red" - ], - [ - "MT02-M-White" - ], - [ - "MT02-S-Gray" - ], - [ - "MT02-S-Red" - ], - [ - "MT02-S-White" - ], - [ - "MT02-XL-Gray" - ], - [ - "MT02-XL-Red" - ], - [ - "MT02-XL-White" - ], - [ - "MT02-XS-Gray" - ], - [ - "MT02-XS-Red" - ], - [ - "MT02-XS-White" - ], - [ - "MT03-L-Blue" - ], - [ - "MT03-L-Red" - ], - [ - "MT03-L-Yellow" - ], - [ - "MT03-M-Blue" - ], - [ - "MT03-M-Red" - ], - [ - "MT03-M-Yellow" - ], - [ - "MT03-S-Blue" - ], - [ - "MT03-S-Red" - ], - [ - "MT03-S-Yellow" - ], - [ - "MT03-XL-Blue" - ], - [ - "MT03-XL-Red" - ], - [ - "MT03-XL-Yellow" - ], - [ - "MT03-XS-Blue" - ], - [ - "MT03-XS-Red" - ], - [ - "MT03-XS-Yellow" - ], - [ - "MT04-L-Blue" - ], - [ - "MT04-M-Blue" - ], - [ - "MT04-S-Blue" - ], - [ - "MT04-XL-Blue" - ], - [ - "MT04-XS-Blue" - ], - [ - "MT05-L-Blue" - ], - [ - "MT05-M-Blue" - ], - [ - "MT05-S-Blue" - ], - [ - "MT05-XL-Blue" - ], - [ - "MT05-XS-Blue" - ], - [ - "MT06-L-Black" - ], - [ - "MT06-M-Black" - ], - [ - "MT06-S-Black" - ], - [ - "MT06-XL-Black" - ], - [ - "MT06-XS-Black" - ], - [ - "MT07-L-Gray" - ], - [ - "MT07-M-Gray" - ], - [ - "MT07-S-Gray" - ], - [ - "MT07-XL-Gray" - ], - [ - "MT07-XS-Gray" - ], - [ - "MT08-L-Green" - ], - [ - "MT08-M-Green" - ], - [ - "MT08-S-Green" - ], - [ - "MT08-XL-Green" - ], - [ - "MT08-XS-Green" - ], - [ - "MT09-L-Blue" - ], - [ - "MT09-M-Blue" - ], - [ - "MT09-S-Blue" - ], - [ - "MT09-XL-Blue" - ], - [ - "MT09-XS-Blue" - ], - [ - "MT10-L-Yellow" - ], - [ - "MT10-M-Yellow" - ], - [ - "MT10-S-Yellow" - ], - [ - "MT10-XL-Yellow" - ], - [ - "MT10-XS-Yellow" - ], - [ - "MT11-L-Blue" - ], - [ - "MT11-M-Blue" - ], - [ - "MT11-S-Blue" - ], - [ - "MT11-XL-Blue" - ], - [ - "MT11-XS-Blue" - ], - [ - "MT12-L-Blue" - ], - [ - "MT12-M-Blue" - ], - [ - "MT12-S-Blue" - ], - [ - "MT12-XL-Blue" - ], - [ - "MT12-XS-Blue" - ], - [ - "WB01-L-Black" - ], - [ - "WB01-L-Gray" - ], - [ - "WB01-L-Purple" - ], - [ - "WB01-M-Black" - ], - [ - "WB01-M-Gray" - ], - [ - "WB01-M-Purple" - ], - [ - "WB01-S-Black" - ], - [ - "WB01-S-Gray" - ], - [ - "WB01-S-Purple" - ], - [ - "WB01-XL-Black" - ], - [ - "WB01-XL-Gray" - ], - [ - "WB01-XL-Purple" - ], - [ - "WB01-XS-Black" - ], - [ - "WB01-XS-Gray" - ], - [ - "WB01-XS-Purple" - ], - [ - "WB02-L-Blue" - ], - [ - "WB02-L-Orange" - ], - [ - "WB02-L-Yellow" - ], - [ - "WB02-M-Blue" - ], - [ - "WB02-M-Orange" - ], - [ - "WB02-M-Yellow" - ], - [ - "WB02-S-Blue" - ], - [ - "WB02-S-Orange" - ], - [ - "WB02-S-Yellow" - ], - [ - "WB02-XL-Blue" - ], - [ - "WB02-XL-Orange" - ], - [ - "WB02-XL-Yellow" - ], - [ - "WB02-XS-Blue" - ], - [ - "WB02-XS-Orange" - ], - [ - "WB02-XS-Yellow" - ], - [ - "WB03-L-Green" - ], - [ - "WB03-L-Red" - ], - [ - "WB03-L-Yellow" - ], - [ - "WB03-M-Green" - ], - [ - "WB03-M-Red" - ], - [ - "WB03-M-Yellow" - ], - [ - "WB03-S-Green" - ], - [ - "WB03-S-Red" - ], - [ - "WB03-S-Yellow" - ], - [ - "WB03-XL-Green" - ], - [ - "WB03-XL-Red" - ], - [ - "WB03-XL-Yellow" - ], - [ - "WB03-XS-Green" - ], - [ - "WB03-XS-Red" - ], - [ - "WB03-XS-Yellow" - ], - [ - "WB04-L-Blue" - ], - [ - "WB04-L-Purple" - ], - [ - "WB04-L-Yellow" - ], - [ - "WB04-M-Blue" - ], - [ - "WB04-M-Purple" - ], - [ - "WB04-M-Yellow" - ], - [ - "WB04-S-Blue" - ], - [ - "WB04-S-Purple" - ], - [ - "WB04-S-Yellow" - ], - [ - "WB04-XL-Blue" - ], - [ - "WB04-XL-Purple" - ], - [ - "WB04-XL-Yellow" - ], - [ - "WB04-XS-Blue" - ], - [ - "WB04-XS-Purple" - ], - [ - "WB04-XS-Yellow" - ], - [ - "WB05-L-Black" - ], - [ - "WB05-L-Orange" - ], - [ - "WB05-L-Purple" - ], - [ - "WB05-M-Black" - ], - [ - "WB05-M-Orange" - ], - [ - "WB05-M-Purple" - ], - [ - "WB05-S-Black" - ], - [ - "WB05-S-Orange" - ], - [ - "WB05-S-Purple" - ], - [ - "WB05-XL-Black" - ], - [ - "WB05-XL-Orange" - ], - [ - "WB05-XL-Purple" - ], - [ - "WB05-XS-Black" - ], - [ - "WB05-XS-Orange" - ], - [ - "WB05-XS-Purple" - ], - [ - "WH01-L-Green" - ], - [ - "WH01-L-Orange" - ], - [ - "WH01-L-Purple" - ], - [ - "WH01-M-Green" - ], - [ - "WH01-M-Orange" - ], - [ - "WH01-M-Purple" - ], - [ - "WH01-S-Green" - ], - [ - "WH01-S-Orange" - ], - [ - "WH01-S-Purple" - ], - [ - "WH01-XL-Green" - ], - [ - "WH01-XL-Orange" - ], - [ - "WH01-XL-Purple" - ], - [ - "WH01-XS-Green" - ], - [ - "WH01-XS-Orange" - ], - [ - "WH01-XS-Purple" - ], - [ - "WH02-L-Blue" - ], - [ - "WH02-L-Green" - ], - [ - "WH02-L-Orange" - ], - [ - "WH02-M-Blue" - ], - [ - "WH02-M-Green" - ], - [ - "WH02-M-Orange" - ], - [ - "WH02-S-Blue" - ], - [ - "WH02-S-Green" - ], - [ - "WH02-S-Orange" - ], - [ - "WH02-XL-Blue" - ], - [ - "WH02-XL-Green" - ], - [ - "WH02-XL-Orange" - ], - [ - "WH02-XS-Blue" - ], - [ - "WH02-XS-Green" - ], - [ - "WH02-XS-Orange" - ], - [ - "WH03-L-Green" - ], - [ - "WH03-L-Purple" - ], - [ - "WH03-L-Red" - ], - [ - "WH03-M-Green" - ], - [ - "WH03-M-Purple" - ], - [ - "WH03-M-Red" - ], - [ - "WH03-S-Green" - ], - [ - "WH03-S-Purple" - ], - [ - "WH03-S-Red" - ], - [ - "WH03-XL-Green" - ], - [ - "WH03-XL-Purple" - ], - [ - "WH03-XL-Red" - ], - [ - "WH03-XS-Green" - ], - [ - "WH03-XS-Purple" - ], - [ - "WH03-XS-Red" - ], - [ - "WH04-L-Blue" - ], - [ - "WH04-L-Orange" - ], - [ - "WH04-L-Purple" - ], - [ - "WH04-M-Blue" - ], - [ - "WH04-M-Orange" - ], - [ - "WH04-M-Purple" - ], - [ - "WH04-S-Blue" - ], - [ - "WH04-S-Orange" - ], - [ - "WH04-S-Purple" - ], - [ - "WH04-XL-Blue" - ], - [ - "WH04-XL-Orange" - ], - [ - "WH04-XL-Purple" - ], - [ - "WH04-XS-Blue" - ], - [ - "WH04-XS-Orange" - ], - [ - "WH04-XS-Purple" - ], - [ - "WH05-L-Orange" - ], - [ - "WH05-L-Purple" - ], - [ - "WH05-L-White" - ], - [ - "WH05-M-Orange" - ], - [ - "WH05-M-Purple" - ], - [ - "WH05-M-White" - ], - [ - "WH05-S-Orange" - ], - [ - "WH05-S-Purple" - ], - [ - "WH05-S-White" - ], - [ - "WH05-XL-Orange" - ], - [ - "WH05-XL-Purple" - ], - [ - "WH05-XL-White" - ], - [ - "WH05-XS-Orange" - ], - [ - "WH05-XS-Purple" - ], - [ - "WH05-XS-White" - ], - [ - "WH06-L-Purple" - ], - [ - "WH06-M-Purple" - ], - [ - "WH06-S-Purple" - ], - [ - "WH06-XL-Purple" - ], - [ - "WH06-XS-Purple" - ], - [ - "WH07-L-Gray" - ], - [ - "WH07-L-Purple" - ], - [ - "WH07-L-White" - ], - [ - "WH07-M-Gray" - ], - [ - "WH07-M-Purple" - ], - [ - "WH07-M-White" - ], - [ - "WH07-S-Gray" - ], - [ - "WH07-S-Purple" - ], - [ - "WH07-S-White" - ], - [ - "WH07-XL-Gray" - ], - [ - "WH07-XL-Purple" - ], - [ - "WH07-XL-White" - ], - [ - "WH07-XS-Gray" - ], - [ - "WH07-XS-Purple" - ], - [ - "WH07-XS-White" - ], - [ - "WH08-L-Orange" - ], - [ - "WH08-L-Purple" - ], - [ - "WH08-L-White" - ], - [ - "WH08-M-Orange" - ], - [ - "WH08-M-Purple" - ], - [ - "WH08-M-White" - ], - [ - "WH08-S-Orange" - ], - [ - "WH08-S-Purple" - ], - [ - "WH08-S-White" - ], - [ - "WH08-XL-Orange" - ], - [ - "WH08-XL-Purple" - ], - [ - "WH08-XL-White" - ], - [ - "WH08-XS-Orange" - ], - [ - "WH08-XS-Purple" - ], - [ - "WH08-XS-White" - ], - [ - "WH09-L-Green" - ], - [ - "WH09-L-Purple" - ], - [ - "WH09-L-Red" - ], - [ - "WH09-M-Green" - ], - [ - "WH09-M-Purple" - ], - [ - "WH09-M-Red" - ], - [ - "WH09-S-Green" - ], - [ - "WH09-S-Purple" - ], - [ - "WH09-S-Red" - ], - [ - "WH09-XL-Green" - ], - [ - "WH09-XL-Purple" - ], - [ - "WH09-XL-Red" - ], - [ - "WH09-XS-Green" - ], - [ - "WH09-XS-Purple" - ], - [ - "WH09-XS-Red" - ], - [ - "WH10-L-Blue" - ], - [ - "WH10-L-Gray" - ], - [ - "WH10-L-Yellow" - ], - [ - "WH10-M-Blue" - ], - [ - "WH10-M-Gray" - ], - [ - "WH10-M-Yellow" - ], - [ - "WH10-S-Blue" - ], - [ - "WH10-S-Gray" - ], - [ - "WH10-S-Yellow" - ], - [ - "WH10-XL-Blue" - ], - [ - "WH10-XL-Gray" - ], - [ - "WH10-XL-Yellow" - ], - [ - "WH10-XS-Blue" - ], - [ - "WH10-XS-Gray" - ], - [ - "WH10-XS-Yellow" - ], - [ - "WH11-L-Blue" - ], - [ - "WH11-L-Green" - ], - [ - "WH11-L-Orange" - ], - [ - "WH11-M-Blue" - ], - [ - "WH11-M-Green" - ], - [ - "WH11-M-Orange" - ], - [ - "WH11-S-Blue" - ], - [ - "WH11-S-Green" - ], - [ - "WH11-S-Orange" - ], - [ - "WH11-XL-Blue" - ], - [ - "WH11-XL-Green" - ], - [ - "WH11-XL-Orange" - ], - [ - "WH11-XS-Blue" - ], - [ - "WH11-XS-Green" - ], - [ - "WH11-XS-Orange" - ], - [ - "WH12-L-Gray" - ], - [ - "WH12-L-Green" - ], - [ - "WH12-L-Purple" - ], - [ - "WH12-M-Gray" - ], - [ - "WH12-M-Green" - ], - [ - "WH12-M-Purple" - ], - [ - "WH12-S-Gray" - ], - [ - "WH12-S-Green" - ], - [ - "WH12-S-Purple" - ], - [ - "WH12-XL-Gray" - ], - [ - "WH12-XL-Green" - ], - [ - "WH12-XL-Purple" - ], - [ - "WH12-XS-Gray" - ], - [ - "WH12-XS-Green" - ], - [ - "WH12-XS-Purple" - ], - [ - "WJ01-L-Blue" - ], - [ - "WJ01-L-Red" - ], - [ - "WJ01-L-Yellow" - ], - [ - "WJ01-M-Blue" - ], - [ - "WJ01-M-Red" - ], - [ - "WJ01-M-Yellow" - ], - [ - "WJ01-S-Blue" - ], - [ - "WJ01-S-Red" - ], - [ - "WJ01-S-Yellow" - ], - [ - "WJ02-L-Black" - ], - [ - "WJ02-L-Blue" - ], - [ - "WJ02-L-Gray" - ], - [ - "WJ02-M-Black" - ], - [ - "WJ02-M-Blue" - ], - [ - "WJ02-M-Gray" - ], - [ - "WJ02-S-Black" - ], - [ - "WJ02-S-Blue" - ], - [ - "WJ02-S-Gray" - ], - [ - "WJ02-XL-Black" - ], - [ - "WJ02-XL-Blue" - ], - [ - "WJ02-XL-Gray" - ], - [ - "WJ02-XS-Black" - ], - [ - "WJ02-XS-Blue" - ], - [ - "WJ02-XS-Gray" - ], - [ - "WJ03-L-Blue" - ], - [ - "WJ03-L-Orange" - ], - [ - "WJ03-L-Red" - ], - [ - "WJ03-M-Blue" - ], - [ - "WJ03-M-Orange" - ], - [ - "WJ03-M-Red" - ], - [ - "WJ03-S-Blue" - ], - [ - "WJ03-S-Orange" - ], - [ - "WJ03-S-Red" - ], - [ - "WJ03-XL-Blue" - ], - [ - "WJ03-XL-Orange" - ], - [ - "WJ03-XL-Red" - ], - [ - "WJ03-XS-Blue" - ], - [ - "WJ03-XS-Orange" - ], - [ - "WJ03-XS-Red" - ], - [ - "WJ04-L-Orange" - ], - [ - "WJ04-L-Red" - ], - [ - "WJ04-L-White" - ], - [ - "WJ04-M-Orange" - ], - [ - "WJ04-M-Red" - ], - [ - "WJ04-M-White" - ], - [ - "WJ04-S-Orange" - ], - [ - "WJ04-S-Red" - ], - [ - "WJ04-S-White" - ], - [ - "WJ04-XL-Orange" - ], - [ - "WJ04-XL-Red" - ], - [ - "WJ04-XL-White" - ], - [ - "WJ04-XS-Orange" - ], - [ - "WJ04-XS-Red" - ], - [ - "WJ04-XS-White" - ], - [ - "WJ05-L-Brown" - ], - [ - "WJ05-L-Green" - ], - [ - "WJ05-L-Red" - ], - [ - "WJ05-M-Brown" - ], - [ - "WJ05-M-Green" - ], - [ - "WJ05-M-Red" - ], - [ - "WJ05-S-Brown" - ], - [ - "WJ05-S-Green" - ], - [ - "WJ05-S-Red" - ], - [ - "WJ05-XL-Brown" - ], - [ - "WJ05-XL-Green" - ], - [ - "WJ05-XL-Red" - ], - [ - "WJ05-XS-Brown" - ], - [ - "WJ05-XS-Green" - ], - [ - "WJ05-XS-Red" - ], - [ - "WJ06-L-Blue" - ], - [ - "WJ06-L-Green" - ], - [ - "WJ06-L-Purple" - ], - [ - "WJ06-M-Blue" - ], - [ - "WJ06-M-Green" - ], - [ - "WJ06-M-Purple" - ], - [ - "WJ06-S-Blue" - ], - [ - "WJ06-S-Green" - ], - [ - "WJ06-S-Purple" - ], - [ - "WJ06-XL-Blue" - ], - [ - "WJ06-XL-Green" - ], - [ - "WJ06-XL-Purple" - ], - [ - "WJ06-XS-Blue" - ], - [ - "WJ06-XS-Green" - ], - [ - "WJ06-XS-Purple" - ], - [ - "WJ07-L-Orange" - ], - [ - "WJ07-L-Purple" - ], - [ - "WJ07-L-Red" - ], - [ - "WJ07-M-Orange" - ], - [ - "WJ07-M-Purple" - ], - [ - "WJ07-M-Red" - ], - [ - "WJ07-S-Orange" - ], - [ - "WJ07-S-Purple" - ], - [ - "WJ07-S-Red" - ], - [ - "WJ07-XL-Orange" - ], - [ - "WJ07-XL-Purple" - ], - [ - "WJ07-XL-Red" - ], - [ - "WJ07-XS-Orange" - ], - [ - "WJ07-XS-Purple" - ], - [ - "WJ07-XS-Red" - ], - [ - "WJ08-L-Gray" - ], - [ - "WJ08-L-Orange" - ], - [ - "WJ08-L-Purple" - ], - [ - "WJ08-M-Gray" - ], - [ - "WJ08-M-Orange" - ], - [ - "WJ08-M-Purple" - ], - [ - "WJ08-S-Gray" - ], - [ - "WJ08-S-Orange" - ], - [ - "WJ08-S-Purple" - ], - [ - "WJ08-XL-Gray" - ], - [ - "WJ08-XL-Orange" - ], - [ - "WJ08-XL-Purple" - ], - [ - "WJ08-XS-Gray" - ], - [ - "WJ08-XS-Orange" - ], - [ - "WJ08-XS-Purple" - ], - [ - "WJ09-L-Blue" - ], - [ - "WJ09-L-Gray" - ], - [ - "WJ09-L-Green" - ], - [ - "WJ09-M-Blue" - ], - [ - "WJ09-M-Gray" - ], - [ - "WJ09-M-Green" - ], - [ - "WJ09-S-Blue" - ], - [ - "WJ09-S-Gray" - ], - [ - "WJ09-S-Green" - ], - [ - "WJ09-XL-Blue" - ], - [ - "WJ09-XL-Gray" - ], - [ - "WJ09-XL-Green" - ], - [ - "WJ09-XS-Blue" - ], - [ - "WJ09-XS-Gray" - ], - [ - "WJ09-XS-Green" - ], - [ - "WJ10-L-Black" - ], - [ - "WJ10-L-Orange" - ], - [ - "WJ10-L-Yellow" - ], - [ - "WJ10-M-Black" - ], - [ - "WJ10-M-Orange" - ], - [ - "WJ10-M-Yellow" - ], - [ - "WJ10-S-Black" - ], - [ - "WJ10-S-Orange" - ], - [ - "WJ10-S-Yellow" - ], - [ - "WJ10-XL-Black" - ], - [ - "WJ10-XL-Orange" - ], - [ - "WJ10-XL-Yellow" - ], - [ - "WJ10-XS-Black" - ], - [ - "WJ10-XS-Orange" - ], - [ - "WJ10-XS-Yellow" - ], - [ - "WJ11-L-Black" - ], - [ - "WJ11-L-Blue" - ], - [ - "WJ11-L-Orange" - ], - [ - "WJ11-M-Black" - ], - [ - "WJ11-M-Blue" - ], - [ - "WJ11-M-Orange" - ], - [ - "WJ11-S-Black" - ], - [ - "WJ11-S-Blue" - ], - [ - "WJ11-S-Orange" - ], - [ - "WJ11-XL-Black" - ], - [ - "WJ11-XL-Blue" - ], - [ - "WJ11-XL-Orange" - ], - [ - "WJ11-XS-Black" - ], - [ - "WJ11-XS-Blue" - ], - [ - "WJ11-XS-Orange" - ], - [ - "WJ12-L-Black" - ], - [ - "WJ12-L-Blue" - ], - [ - "WJ12-L-Purple" - ], - [ - "WJ12-M-Black" - ], - [ - "WJ12-M-Blue" - ], - [ - "WJ12-M-Purple" - ], - [ - "WJ12-S-Black" - ], - [ - "WJ12-S-Blue" - ], - [ - "WJ12-S-Purple" - ], - [ - "WJ12-XL-Black" - ], - [ - "WJ12-XL-Blue" - ], - [ - "WJ12-XL-Purple" - ], - [ - "WJ12-XS-Black" - ], - [ - "WJ12-XS-Blue" - ], - [ - "WJ12-XS-Purple" - ], - [ - "WP01-28-Black" - ], - [ - "WP01-28-Gray" - ], - [ - "WP01-28-White" - ], - [ - "WP01-29-Black" - ], - [ - "WP01-29-Gray" - ], - [ - "WP01-29-White" - ], - [ - "WP02-28-Blue" - ], - [ - "WP02-28-Purple" - ], - [ - "WP02-28-Red" - ], - [ - "WP02-29-Blue" - ], - [ - "WP02-29-Purple" - ], - [ - "WP02-29-Red" - ], - [ - "WP03-28-Black" - ], - [ - "WP03-28-Blue" - ], - [ - "WP03-28-Purple" - ], - [ - "WP03-29-Black" - ], - [ - "WP03-29-Blue" - ], - [ - "WP03-29-Purple" - ], - [ - "WP04-28-Black" - ], - [ - "WP04-28-Blue" - ], - [ - "WP04-28-White" - ], - [ - "WP04-29-Black" - ], - [ - "WP04-29-Blue" - ], - [ - "WP04-29-White" - ], - [ - "WP05-28-Blue" - ], - [ - "WP05-28-Gray" - ], - [ - "WP05-28-Red" - ], - [ - "WP05-29-Blue" - ], - [ - "WP05-29-Gray" - ], - [ - "WP05-29-Red" - ], - [ - "WP06-28-Black" - ], - [ - "WP06-28-Blue" - ], - [ - "WP06-28-Orange" - ], - [ - "WP06-29-Black" - ], - [ - "WP06-29-Blue" - ], - [ - "WP06-29-Orange" - ], - [ - "WP07-28-Black" - ], - [ - "WP07-28-Blue" - ], - [ - "WP07-28-Orange" - ], - [ - "WP07-29-Black" - ], - [ - "WP07-29-Blue" - ], - [ - "WP07-29-Orange" - ], - [ - "WP08-28-Black" - ], - [ - "WP08-28-Green" - ], - [ - "WP08-28-Red" - ], - [ - "WP08-29-Black" - ], - [ - "WP08-29-Green" - ], - [ - "WP08-29-Red" - ], - [ - "WP09-28-Black" - ], - [ - "WP09-28-Blue" - ], - [ - "WP09-28-Purple" - ], - [ - "WP09-29-Black" - ], - [ - "WP09-29-Blue" - ], - [ - "WP09-29-Purple" - ], - [ - "WP10-28-Black" - ], - [ - "WP10-28-Gray" - ], - [ - "WP10-28-White" - ], - [ - "WP10-29-Black" - ], - [ - "WP10-29-Gray" - ], - [ - "WP10-29-White" - ], - [ - "WP11-28-Blue" - ], - [ - "WP11-28-Green" - ], - [ - "WP11-28-Red" - ], - [ - "WP11-29-Blue" - ], - [ - "WP11-29-Green" - ], - [ - "WP11-29-Red" - ], - [ - "WP12-28-Blue" - ], - [ - "WP12-28-Gray" - ], - [ - "WP12-28-Green" - ], - [ - "WP12-29-Blue" - ], - [ - "WP12-29-Gray" - ], - [ - "WP12-29-Green" - ], - [ - "WP13-28-Blue" - ], - [ - "WP13-28-Green" - ], - [ - "WP13-28-Orange" - ], - [ - "WP13-29-Blue" - ], - [ - "WP13-29-Green" - ], - [ - "WP13-29-Orange" - ], - [ - "WS01-L-Black" - ], - [ - "WS01-L-Green" - ], - [ - "WS01-L-Yellow" - ], - [ - "WS01-M-Black" - ], - [ - "WS01-M-Green" - ], - [ - "WS01-M-Yellow" - ], - [ - "WS01-S-Black" - ], - [ - "WS01-S-Green" - ], - [ - "WS01-S-Yellow" - ], - [ - "WS01-XL-Black" - ], - [ - "WS01-XL-Green" - ], - [ - "WS01-XL-Yellow" - ], - [ - "WS01-XS-Black" - ], - [ - "WS01-XS-Green" - ], - [ - "WS01-XS-Yellow" - ], - [ - "WS02-L-Blue" - ], - [ - "WS02-L-Green" - ], - [ - "WS02-L-Red" - ], - [ - "WS02-M-Blue" - ], - [ - "WS02-M-Green" - ], - [ - "WS02-M-Red" - ], - [ - "WS02-S-Blue" - ], - [ - "WS02-S-Green" - ], - [ - "WS02-S-Red" - ], - [ - "WS02-XL-Blue" - ], - [ - "WS02-XL-Green" - ], - [ - "WS02-XL-Red" - ], - [ - "WS02-XS-Blue" - ], - [ - "WS02-XS-Green" - ], - [ - "WS02-XS-Red" - ], - [ - "WS03-L-Blue" - ], - [ - "WS03-L-Green" - ], - [ - "WS03-L-Red" - ], - [ - "WS03-M-Blue" - ], - [ - "WS03-M-Green" - ], - [ - "WS03-M-Red" - ], - [ - "WS03-S-Blue" - ], - [ - "WS03-S-Green" - ], - [ - "WS03-S-Red" - ], - [ - "WS03-XL-Blue" - ], - [ - "WS03-XL-Green" - ], - [ - "WS03-XL-Red" - ], - [ - "WS03-XS-Blue" - ], - [ - "WS03-XS-Green" - ], - [ - "WS03-XS-Red" - ], - [ - "WS04-L-Blue" - ], - [ - "WS04-L-Green" - ], - [ - "WS04-L-Red" - ], - [ - "WS04-M-Blue" - ], - [ - "WS04-M-Green" - ], - [ - "WS04-M-Red" - ], - [ - "WS04-S-Blue" - ], - [ - "WS04-S-Green" - ], - [ - "WS04-S-Red" - ], - [ - "WS04-XL-Blue" - ], - [ - "WS04-XL-Green" - ], - [ - "WS04-XL-Red" - ], - [ - "WS04-XS-Blue" - ], - [ - "WS04-XS-Green" - ], - [ - "WS04-XS-Red" - ], - [ - "WS05-L-Black" - ], - [ - "WS05-L-Orange" - ], - [ - "WS05-L-Yellow" - ], - [ - "WS05-M-Black" - ], - [ - "WS05-M-Orange" - ], - [ - "WS05-M-Yellow" - ], - [ - "WS05-S-Black" - ], - [ - "WS05-S-Orange" - ], - [ - "WS05-S-Yellow" - ], - [ - "WS05-XL-Black" - ], - [ - "WS05-XL-Orange" - ], - [ - "WS05-XL-Yellow" - ], - [ - "WS05-XS-Black" - ], - [ - "WS05-XS-Orange" - ], - [ - "WS05-XS-Yellow" - ], - [ - "WS06-L-Gray" - ], - [ - "WS06-L-Purple" - ], - [ - "WS06-L-Red" - ], - [ - "WS06-M-Gray" - ], - [ - "WS06-M-Purple" - ], - [ - "WS06-M-Red" - ], - [ - "WS06-S-Gray" - ], - [ - "WS06-S-Purple" - ], - [ - "WS06-S-Red" - ], - [ - "WS06-XL-Gray" - ], - [ - "WS06-XL-Purple" - ], - [ - "WS06-XL-Red" - ], - [ - "WS06-XS-Gray" - ], - [ - "WS06-XS-Purple" - ], - [ - "WS06-XS-Red" - ], - [ - "WS07-L-Black" - ], - [ - "WS07-L-White" - ], - [ - "WS07-L-Yellow" - ], - [ - "WS07-M-Black" - ], - [ - "WS07-M-White" - ], - [ - "WS07-M-Yellow" - ], - [ - "WS07-S-Black" - ], - [ - "WS07-S-White" - ], - [ - "WS07-S-Yellow" - ], - [ - "WS07-XL-Black" - ], - [ - "WS07-XL-White" - ], - [ - "WS07-XL-Yellow" - ], - [ - "WS07-XS-Black" - ], - [ - "WS07-XS-White" - ], - [ - "WS07-XS-Yellow" - ], - [ - "WS08-L-Black" - ], - [ - "WS08-L-Blue" - ], - [ - "WS08-L-Red" - ], - [ - "WS08-M-Black" - ], - [ - "WS08-M-Blue" - ], - [ - "WS08-M-Red" - ], - [ - "WS08-S-Black" - ], - [ - "WS08-S-Blue" - ], - [ - "WS08-S-Red" - ], - [ - "WS08-XL-Black" - ], - [ - "WS08-XL-Blue" - ], - [ - "WS08-XL-Red" - ], - [ - "WS08-XS-Black" - ], - [ - "WS08-XS-Blue" - ], - [ - "WS08-XS-Red" - ], - [ - "WS09-L-Blue" - ], - [ - "WS09-L-Red" - ], - [ - "WS09-L-White" - ], - [ - "WS09-M-Blue" - ], - [ - "WS09-M-Red" - ], - [ - "WS09-M-White" - ], - [ - "WS09-S-Blue" - ], - [ - "WS09-S-Red" - ], - [ - "WS09-S-White" - ], - [ - "WS09-XL-Blue" - ], - [ - "WS09-XL-Red" - ], - [ - "WS09-XL-White" - ], - [ - "WS09-XS-Blue" - ], - [ - "WS09-XS-Red" - ], - [ - "WS09-XS-White" - ], - [ - "WS10-L-Green" - ], - [ - "WS10-L-Red" - ], - [ - "WS10-L-Yellow" - ], - [ - "WS10-M-Green" - ], - [ - "WS10-M-Red" - ], - [ - "WS10-M-Yellow" - ], - [ - "WS10-S-Green" - ], - [ - "WS10-S-Red" - ], - [ - "WS10-S-Yellow" - ], - [ - "WS10-XL-Green" - ], - [ - "WS10-XL-Red" - ], - [ - "WS10-XL-Yellow" - ], - [ - "WS10-XS-Green" - ], - [ - "WS10-XS-Red" - ], - [ - "WS10-XS-Yellow" - ], - [ - "WS11-L-Green" - ], - [ - "WS11-L-Orange" - ], - [ - "WS11-L-Yellow" - ], - [ - "WS11-M-Green" - ], - [ - "WS11-M-Orange" - ], - [ - "WS11-M-Yellow" - ], - [ - "WS11-S-Green" - ], - [ - "WS11-S-Orange" - ], - [ - "WS11-S-Yellow" - ], - [ - "WS11-XL-Green" - ], - [ - "WS11-XL-Orange" - ], - [ - "WS11-XL-Yellow" - ], - [ - "WS11-XS-Green" - ], - [ - "WS11-XS-Orange" - ], - [ - "WS11-XS-Yellow" - ], - [ - "WS12-L-Blue" - ], - [ - "WS12-L-Orange" - ], - [ - "WS12-L-Purple" - ], - [ - "WS12-M-Blue" - ], - [ - "WS12-M-Orange" - ], - [ - "WS12-M-Purple" - ], - [ - "WS12-S-Blue" - ], - [ - "WS12-S-Orange" - ], - [ - "WS12-S-Purple" - ], - [ - "WS12-XL-Blue" - ], - [ - "WS12-XL-Orange" - ], - [ - "WS12-XL-Purple" - ], - [ - "WS12-XS-Blue" - ], - [ - "WS12-XS-Orange" - ], - [ - "WS12-XS-Purple" - ], - [ - "WSH01-28-Black" - ], - [ - "WSH01-28-Green" - ], - [ - "WSH01-28-Red" - ], - [ - "WSH01-29-Black" - ], - [ - "WSH01-29-Green" - ], - [ - "WSH01-29-Red" - ], - [ - "WSH01-30-Black" - ], - [ - "WSH01-30-Green" - ], - [ - "WSH01-30-Red" - ], - [ - "WSH01-31-Black" - ], - [ - "WSH01-31-Green" - ], - [ - "WSH01-31-Red" - ], - [ - "WSH01-32-Black" - ], - [ - "WSH01-32-Green" - ], - [ - "WSH01-32-Red" - ], - [ - "WSH02-28-Gray" - ], - [ - "WSH02-28-Orange" - ], - [ - "WSH02-28-Yellow" - ], - [ - "WSH02-29-Gray" - ], - [ - "WSH02-29-Orange" - ], - [ - "WSH02-29-Yellow" - ], - [ - "WSH02-30-Gray" - ], - [ - "WSH02-30-Orange" - ], - [ - "WSH02-30-Yellow" - ], - [ - "WSH02-31-Gray" - ], - [ - "WSH02-31-Orange" - ], - [ - "WSH02-31-Yellow" - ], - [ - "WSH02-32-Gray" - ], - [ - "WSH02-32-Orange" - ], - [ - "WSH02-32-Yellow" - ], - [ - "WSH03-28-Blue" - ], - [ - "WSH03-28-Gray" - ], - [ - "WSH03-28-Orange" - ], - [ - "WSH03-29-Blue" - ], - [ - "WSH03-29-Gray" - ], - [ - "WSH03-29-Orange" - ], - [ - "WSH03-30-Blue" - ], - [ - "WSH03-30-Gray" - ], - [ - "WSH03-30-Orange" - ], - [ - "WSH03-31-Blue" - ], - [ - "WSH03-31-Gray" - ], - [ - "WSH03-31-Orange" - ], - [ - "WSH03-32-Blue" - ], - [ - "WSH03-32-Gray" - ], - [ - "WSH03-32-Orange" - ], - [ - "WSH04-28-Black" - ], - [ - "WSH04-28-Green" - ], - [ - "WSH04-28-Orange" - ], - [ - "WSH04-29-Black" - ], - [ - "WSH04-29-Green" - ], - [ - "WSH04-29-Orange" - ], - [ - "WSH04-30-Black" - ], - [ - "WSH04-30-Green" - ], - [ - "WSH04-30-Orange" - ], - [ - "WSH04-31-Black" - ], - [ - "WSH04-31-Green" - ], - [ - "WSH04-31-Orange" - ], - [ - "WSH04-32-Black" - ], - [ - "WSH04-32-Green" - ], - [ - "WSH04-32-Orange" - ], - [ - "WSH05-28-Blue" - ], - [ - "WSH05-28-Purple" - ], - [ - "WSH05-28-Yellow" - ], - [ - "WSH05-29-Blue" - ], - [ - "WSH05-29-Purple" - ], - [ - "WSH05-29-Yellow" - ], - [ - "WSH05-30-Blue" - ], - [ - "WSH05-30-Purple" - ], - [ - "WSH05-30-Yellow" - ], - [ - "WSH05-31-Blue" - ], - [ - "WSH05-31-Purple" - ], - [ - "WSH05-31-Yellow" - ], - [ - "WSH05-32-Blue" - ], - [ - "WSH05-32-Purple" - ], - [ - "WSH05-32-Yellow" - ], - [ - "WSH06-28-Gray" - ], - [ - "WSH06-28-Orange" - ], - [ - "WSH06-28-Purple" - ], - [ - "WSH06-29-Gray" - ], - [ - "WSH06-29-Orange" - ], - [ - "WSH06-29-Purple" - ], - [ - "WSH07-28-Black" - ], - [ - "WSH07-28-Blue" - ], - [ - "WSH07-28-Purple" - ], - [ - "WSH07-29-Black" - ], - [ - "WSH07-29-Blue" - ], - [ - "WSH07-29-Purple" - ], - [ - "WSH08-28-Purple" - ], - [ - "WSH08-29-Purple" - ], - [ - "WSH08-30-Purple" - ], - [ - "WSH08-31-Purple" - ], - [ - "WSH08-32-Purple" - ], - [ - "WSH09-28-Gray" - ], - [ - "WSH09-28-Green" - ], - [ - "WSH09-28-White" - ], - [ - "WSH09-29-Gray" - ], - [ - "WSH09-29-Green" - ], - [ - "WSH09-29-White" - ], - [ - "WSH10-28-Black" - ], - [ - "WSH10-28-Orange" - ], - [ - "WSH10-28-White" - ], - [ - "WSH10-29-Black" - ], - [ - "WSH10-29-Orange" - ], - [ - "WSH10-29-White" - ], - [ - "WSH11-28-Blue" - ], - [ - "WSH11-28-Orange" - ], - [ - "WSH11-28-Red" - ], - [ - "WSH11-29-Blue" - ], - [ - "WSH11-29-Orange" - ], - [ - "WSH11-29-Red" - ], - [ - "WSH12-28-Green" - ], - [ - "WSH12-28-Purple" - ], - [ - "WSH12-28-Red" - ], - [ - "WSH12-29-Green" - ], - [ - "WSH12-29-Purple" - ], - [ - "WSH12-29-Red" - ], - [ - "WSH12-30-Green" - ], - [ - "WSH12-30-Purple" - ], - [ - "WSH12-30-Red" - ], - [ - "WSH12-31-Green" - ], - [ - "WSH12-31-Purple" - ], - [ - "WSH12-31-Red" - ], - [ - "WSH12-32-Green" - ], - [ - "WSH12-32-Purple" - ], - [ - "WSH12-32-Red" - ], - [ - "WT01-L-Black" - ], - [ - "WT01-L-Blue" - ], - [ - "WT01-L-Orange" - ], - [ - "WT01-M-Black" - ], - [ - "WT01-M-Blue" - ], - [ - "WT01-M-Orange" - ], - [ - "WT01-S-Black" - ], - [ - "WT01-S-Blue" - ], - [ - "WT01-S-Orange" - ], - [ - "WT01-XL-Black" - ], - [ - "WT01-XL-Blue" - ], - [ - "WT01-XL-Orange" - ], - [ - "WT01-XS-Black" - ], - [ - "WT01-XS-Blue" - ], - [ - "WT01-XS-Orange" - ], - [ - "WT02-L-Green" - ], - [ - "WT02-L-Orange" - ], - [ - "WT02-L-Yellow" - ], - [ - "WT02-M-Green" - ], - [ - "WT02-M-Orange" - ], - [ - "WT02-M-Yellow" - ], - [ - "WT02-S-Green" - ], - [ - "WT02-S-Orange" - ], - [ - "WT02-S-Yellow" - ], - [ - "WT02-XL-Green" - ], - [ - "WT02-XL-Orange" - ], - [ - "WT02-XL-Yellow" - ], - [ - "WT02-XS-Green" - ], - [ - "WT02-XS-Orange" - ], - [ - "WT02-XS-Yellow" - ], - [ - "WT03-L-Orange" - ], - [ - "WT03-L-Purple" - ], - [ - "WT03-L-Red" - ], - [ - "WT03-M-Orange" - ], - [ - "WT03-M-Purple" - ], - [ - "WT03-M-Red" - ], - [ - "WT03-S-Orange" - ], - [ - "WT03-S-Purple" - ], - [ - "WT03-S-Red" - ], - [ - "WT03-XL-Orange" - ], - [ - "WT03-XL-Purple" - ], - [ - "WT03-XL-Red" - ], - [ - "WT03-XS-Orange" - ], - [ - "WT03-XS-Purple" - ], - [ - "WT03-XS-Red" - ], - [ - "WT04-L-Blue" - ], - [ - "WT04-L-Purple" - ], - [ - "WT04-L-Red" - ], - [ - "WT04-M-Blue" - ], - [ - "WT04-M-Purple" - ], - [ - "WT04-M-Red" - ], - [ - "WT04-S-Blue" - ], - [ - "WT04-S-Purple" - ], - [ - "WT04-S-Red" - ], - [ - "WT04-XL-Blue" - ], - [ - "WT04-XL-Purple" - ], - [ - "WT04-XL-Red" - ], - [ - "WT04-XS-Blue" - ], - [ - "WT04-XS-Purple" - ], - [ - "WT04-XS-Red" - ], - [ - "WT05-L-Orange" - ], - [ - "WT05-L-Purple" - ], - [ - "WT05-L-White" - ], - [ - "WT05-M-Orange" - ], - [ - "WT05-M-Purple" - ], - [ - "WT05-M-White" - ], - [ - "WT05-S-Orange" - ], - [ - "WT05-S-Purple" - ], - [ - "WT05-S-White" - ], - [ - "WT05-XL-Orange" - ], - [ - "WT05-XL-Purple" - ], - [ - "WT05-XL-White" - ], - [ - "WT05-XS-Orange" - ], - [ - "WT05-XS-Purple" - ], - [ - "WT05-XS-White" - ], - [ - "WT06-L-Blue" - ], - [ - "WT06-L-Red" - ], - [ - "WT06-L-Yellow" - ], - [ - "WT06-M-Blue" - ], - [ - "WT06-M-Red" - ], - [ - "WT06-M-Yellow" - ], - [ - "WT06-S-Blue" - ], - [ - "WT06-S-Red" - ], - [ - "WT06-S-Yellow" - ], - [ - "WT06-XL-Blue" - ], - [ - "WT06-XL-Red" - ], - [ - "WT06-XL-Yellow" - ], - [ - "WT06-XS-Blue" - ], - [ - "WT06-XS-Red" - ], - [ - "WT06-XS-Yellow" - ], - [ - "WT07-L-Green" - ], - [ - "WT07-L-White" - ], - [ - "WT07-L-Yellow" - ], - [ - "WT07-M-Green" - ], - [ - "WT07-M-White" - ], - [ - "WT07-M-Yellow" - ], - [ - "WT07-S-Green" - ], - [ - "WT07-S-White" - ], - [ - "WT07-S-Yellow" - ], - [ - "WT07-XL-Green" - ], - [ - "WT07-XL-White" - ], - [ - "WT07-XL-Yellow" - ], - [ - "WT07-XS-Green" - ], - [ - "WT07-XS-White" - ], - [ - "WT07-XS-Yellow" - ], - [ - "WT08-L-Black" - ], - [ - "WT08-L-Purple" - ], - [ - "WT08-L-Yellow" - ], - [ - "WT08-M-Black" - ], - [ - "WT08-M-Purple" - ], - [ - "WT08-M-Yellow" - ], - [ - "WT08-S-Black" - ], - [ - "WT08-S-Purple" - ], - [ - "WT08-S-Yellow" - ], - [ - "WT08-XL-Black" - ], - [ - "WT08-XL-Purple" - ], - [ - "WT08-XL-Yellow" - ], - [ - "WT08-XS-Black" - ], - [ - "WT08-XS-Purple" - ], - [ - "WT08-XS-Yellow" - ], - [ - "WT09-L-Purple" - ], - [ - "WT09-L-White" - ], - [ - "WT09-L-Yellow" - ], - [ - "WT09-M-Purple" - ], - [ - "WT09-M-White" - ], - [ - "WT09-M-Yellow" - ], - [ - "WT09-S-Purple" - ], - [ - "WT09-S-White" - ], - [ - "WT09-S-Yellow" - ], - [ - "WT09-XL-Purple" - ], - [ - "WT09-XL-White" - ], - [ - "WT09-XL-Yellow" - ], - [ - "WT09-XS-Purple" - ], - [ - "WT09-XS-White" - ], - [ - "WT09-XS-Yellow" - ] - ] - }, - { - "question": "How many product IDs have an integer attribute ID 93 with a value of 60?", - "answer": 137, - "sql": "SELECT entity_id FROM catalog_product_entity_int WHERE attribute_id = 93 AND value = 60;", - "sql_execute_result": [ - [ - 97 - ], - [ - 100 - ], - [ - 103 - ], - [ - 106 - ], - [ - 109 - ], - [ - 257 - ], - [ - 260 - ], - [ - 263 - ], - [ - 266 - ], - [ - 269 - ], - [ - 305 - ], - [ - 308 - ], - [ - 311 - ], - [ - 314 - ], - [ - 317 - ], - [ - 337 - ], - [ - 340 - ], - [ - 343 - ], - [ - 346 - ], - [ - 349 - ], - [ - 481 - ], - [ - 484 - ], - [ - 487 - ], - [ - 490 - ], - [ - 493 - ], - [ - 529 - ], - [ - 532 - ], - [ - 535 - ], - [ - 538 - ], - [ - 541 - ], - [ - 545 - ], - [ - 548 - ], - [ - 551 - ], - [ - 554 - ], - [ - 557 - ], - [ - 657 - ], - [ - 660 - ], - [ - 663 - ], - [ - 666 - ], - [ - 669 - ], - [ - 707 - ], - [ - 708 - ], - [ - 709 - ], - [ - 710 - ], - [ - 711 - ], - [ - 914 - ], - [ - 917 - ], - [ - 920 - ], - [ - 923 - ], - [ - 1165 - ], - [ - 1168 - ], - [ - 1171 - ], - [ - 1174 - ], - [ - 1177 - ], - [ - 1213 - ], - [ - 1216 - ], - [ - 1219 - ], - [ - 1335 - ], - [ - 1338 - ], - [ - 1341 - ], - [ - 1344 - ], - [ - 1347 - ], - [ - 1463 - ], - [ - 1466 - ], - [ - 1469 - ], - [ - 1472 - ], - [ - 1475 - ], - [ - 1511 - ], - [ - 1514 - ], - [ - 1517 - ], - [ - 1520 - ], - [ - 1523 - ], - [ - 1527 - ], - [ - 1530 - ], - [ - 1533 - ], - [ - 1536 - ], - [ - 1539 - ], - [ - 1559 - ], - [ - 1562 - ], - [ - 1565 - ], - [ - 1568 - ], - [ - 1571 - ], - [ - 1575 - ], - [ - 1578 - ], - [ - 1581 - ], - [ - 1584 - ], - [ - 1587 - ], - [ - 1607 - ], - [ - 1610 - ], - [ - 1613 - ], - [ - 1616 - ], - [ - 1619 - ], - [ - 1623 - ], - [ - 1626 - ], - [ - 1629 - ], - [ - 1632 - ], - [ - 1635 - ], - [ - 1639 - ], - [ - 1642 - ], - [ - 1645 - ], - [ - 1648 - ], - [ - 1651 - ], - [ - 1687 - ], - [ - 1690 - ], - [ - 1693 - ], - [ - 1696 - ], - [ - 1699 - ], - [ - 1751 - ], - [ - 1754 - ], - [ - 1757 - ], - [ - 1760 - ], - [ - 1763 - ], - [ - 1767 - ], - [ - 1770 - ], - [ - 1773 - ], - [ - 1776 - ], - [ - 1779 - ], - [ - 1783 - ], - [ - 1786 - ], - [ - 1789 - ], - [ - 1792 - ], - [ - 1795 - ], - [ - 1799 - ], - [ - 1802 - ], - [ - 1805 - ], - [ - 1808 - ], - [ - 1811 - ], - [ - 1922 - ], - [ - 1925 - ], - [ - 1928 - ], - [ - 1931 - ], - [ - 1934 - ], - [ - 1970 - ], - [ - 1973 - ], - [ - 1976 - ], - [ - 1979 - ], - [ - 1982 - ] - ] - }, - { - "question": "What is the entity ID of the product with SKU 'WS12-M-Orange'?", - "answer": 1548, - "sql": "SELECT entity_id FROM catalog_product_entity WHERE sku = 'WS12-M-Orange';", - "sql_execute_result": [ - [ - 1548 - ] - ] - }, - { - "question": "Retrieve the base price including tax for the product with SKU 'WS08-XS-Blue'.", - "answer": "34.6400", - "sql": "SELECT base_price_incl_tax FROM sales_invoice_item WHERE sku = 'WS08-XS-Blue';", - "sql_execute_result": [ - [ - "34.6400" - ] - ] - }, - { - "question": "How many countries have their ISO2 code in the sample data?", - "answer": 5, - "sql": "SELECT COUNT(*) FROM directory_country WHERE iso2_code IN ('TT', 'QA', 'IM', 'NU', 'CH');", - "sql_execute_result": [ - [ - 5 - ] - ] - }, - { - "question": "What is the product type of the product with SKU 'MH06-L-Black'?", - "answer": "simple", - "sql": "SELECT type_id FROM catalog_product_entity WHERE sku = 'MH06-L-Black';", - "sql_execute_result": [ - [ - "simple" - ] - ] - }, - { - "question": "Determine the attribute set ID of the product with SKU 'MJ10-L-Orange'.", - "answer": 9, - "sql": "SELECT attribute_set_id FROM catalog_product_entity WHERE sku = 'MJ10-L-Orange';", - "sql_execute_result": [ - [ - 9 - ] - ] - }, - { - "question": "What is the price of the product with SKU 'aero-daily-fitness-tee-s-yellow'?", - "answer": "The price of the product with SKU 'aero-daily-fitness-tee-s-yellow' is 24.00.", - "sql": "SELECT value FROM catalog_product_entity_decimal WHERE entity_id = (SELECT entity_id FROM catalog_product_entity_varchar WHERE value = 'aero-daily-fitness-tee-s-yellow') AND attribute_id = 77;", - "sql_execute_result": [ - [ - "24.000000" - ] - ] - }, - { - "question": "Find the description of the product with ID 460.", - "answer": "
Pumping iron or dialing the track, you've got cool comfort on your side in our short-sleeve Helios EverCool™ Tee. The fabric is infused with moisture-wicking technology that pulls sweat off your skin for speedy evaporation. Stretchy fabric gussets encourage ventilation while increasing your range of motion.
\n• Teal quick dry tee.
• Relaxed fit.
• Crew neckline.
• Machine wash/dry.
Pumping iron or dialing the track, you've got cool comfort on your side in our short-sleeve Helios EverCool™ Tee. The fabric is infused with moisture-wicking technology that pulls sweat off your skin for speedy evaporation. Stretchy fabric gussets encourage ventilation while increasing your range of motion.
\n• Teal quick dry tee.
• Relaxed fit.
• Crew neckline.
• Machine wash/dry.
You'll let your fear go and push your limits in your new Sol Active Short. Featuring ultra-breathable performance fabric and a flat comfort-fit waistband, the Sol Active Short is perfect for high-intensity circuits or high-heat bikram.
\n• Light blue jersey shorts with mesh detail.
• 87% Spandex 13% Lycra.
• Machine wash cold, tumble dry low.
• Superior performance fabric.
• Flat-lock seams.
You'll let your fear go and push your limits in your new Sol Active Short. Featuring ultra-breathable performance fabric and a flat comfort-fit waistband, the Sol Active Short is perfect for high-intensity circuits or high-heat bikram.
\n• Light blue jersey shorts with mesh detail.
• 87% Spandex 13% Lycra.
• Machine wash cold, tumble dry low.
• Superior performance fabric.
• Flat-lock seams.
What more do you need than a sporty yoga short made with organic cotton and a little spandex for mobility? The Hawkeye Yoga Short brings a stylish, standard fit you can sport with confidence outside the studio.
\n• Dark gray shorts with red accents.
• 92% Organic Cotton 8% Spandex.
• Breathable stretch organic cotton.
• Medium=8.0\" (21.0cm) inseam.
What more do you need than a sporty yoga short made with organic cotton and a little spandex for mobility? The Hawkeye Yoga Short brings a stylish, standard fit you can sport with confidence outside the studio.
\n• Dark gray shorts with red accents.
• 92% Organic Cotton 8% Spandex.
• Breathable stretch organic cotton.
• Medium=8.0\" (21.0cm) inseam.
Like it's v-neck counterpart, the crew-neck Atomic Tee will get you to your goal and beyond with its many load-bearing features: ultra-lightweight, moisture-wicking Cocona® fabric, chafe-free flatlock seams and an ergonomic cut that moves with your body.
\n• Red polyester tee.
• Crew neckline.
• Cocona® performance fabric.
• Machine wash/dry.
Like it's v-neck counterpart, the crew-neck Atomic Tee will get you to your goal and beyond with its many load-bearing features: ultra-lightweight, moisture-wicking Cocona® fabric, chafe-free flatlock seams and an ergonomic cut that moves with your body.
\n• Red polyester tee.
• Crew neckline.
• Cocona® performance fabric.
• Machine wash/dry.
The Balboa Persistence Tee is a must-have for any athlete, Philadelphia or elsewhere. We took the best of performance apparel, cut the fluff and boiled it down to the basics for a lightweight, quick-drying t-shirt.
\n• Crew neckline.
• Semi-fitted.
• Cocona® performance fabric.
• Machine wash/dry.
The Balboa Persistence Tee is a must-have for any athlete, Philadelphia or elsewhere. We took the best of performance apparel, cut the fluff and boiled it down to the basics for a lightweight, quick-drying t-shirt.
\n• Crew neckline.
• Semi-fitted.
• Cocona® performance fabric.
• Machine wash/dry.
A heavenly soft and stylish eco garment, the Electra Bra Top is perfect for wearing on its own as a hot yoga top or layered under a tank.
\n• Gray rouched bra top.
• Attractive back straps feature contrasting motif fabric.
• Interior bra top is lined with breathable mesh.
• Elastic underband for superior support.
• Removable cup inserts.
• Chafe-free flat lock seams provide added comfort.
A heavenly soft and stylish eco garment, the Electra Bra Top is perfect for wearing on its own as a hot yoga top or layered under a tank.
\n• Gray rouched bra top.
• Attractive back straps feature contrasting motif fabric.
• Interior bra top is lined with breathable mesh.
• Elastic underband for superior support.
• Removable cup inserts.
• Chafe-free flat lock seams provide added comfort.
Turn the corner and open it up -- your driveway is two blocks away. The Supernova Sport Pant gets you there with key features like moisture-wicking LumaTech™ fabric and mesh ventilation. Side seam pockets ensure total convenience during rest periods.
\n• Dark heather gray straight leg cotton pants.
• Relaxed fit.
• Internal drawstring.
• Machine wash/dry.
Turn the corner and open it up -- your driveway is two blocks away. The Supernova Sport Pant gets you there with key features like moisture-wicking LumaTech™ fabric and mesh ventilation. Side seam pockets ensure total convenience during rest periods.
\n• Dark heather gray straight leg cotton pants.
• Relaxed fit.
• Internal drawstring.
• Machine wash/dry.