SnowflakeAssociate levelPage 4 of 4

SnowPro Associate: Platform exam dumps: questions 301 to 367 of 367

Page 4 of the free SnowPro Associate: Platform question bank for the SnowPro® Associate: Platform Certification exam. Questions 301 to 367 are listed below, the first 5 in full with answers and explanations. Back to page 1 for the exam overview and FAQ.

Question bank last updated April 2026

Free SnowPro Associate: Platform practice questions

Questions 301 to 305 of 367

Pick an answer before you open the explanation. Each question also has its own page with a permalink.

SnowPro Associate: Platform Question 301

Single answer○ Use of SELECT statements

A data analyst needs to produce a daily report from the SALES table showing one row per customer for the current month. The report must include the customer's total sales amount and only include customers whose total sales for the month exceed 10,000. Which SELECT statement correctly returns the required result?

  1. A

    SELECT customer_id, SUM(amount) AS total_sales FROM sales WHERE sale_date >= DATE_TRUNC('MONTH', CURRENT_DATE()) AND SUM(amount) > 10000 GROUP BY customer_id;

  2. B

    SELECT customer_id, SUM(amount) AS total_sales FROM sales WHERE sale_date >= DATE_TRUNC('MONTH', CURRENT_DATE()) GROUP BY customer_id HAVING SUM(amount) > 10000;

  3. C

    SELECT customer_id, amount AS total_sales FROM sales WHERE sale_date >= DATE_TRUNC('MONTH', CURRENT_DATE()) GROUP BY customer_id HAVING amount > 10000;

  4. D

    SELECT customer_id, SUM(amount) AS total_sales FROM sales GROUP BY customer_id WHERE sale_date >= DATE_TRUNC('MONTH', CURRENT_DATE()) HAVING total_sales > 10000;

Show answer and explanation

Correct answer: B

Explanation

This question tests practical use of SELECT statements with WHERE, GROUP BY, aggregate functions, and HAVING in Snowflake. The correct pattern is: use WHERE to filter individual rows before aggregation, use GROUP BY to create one result row per grouping key, and use HAVING to filter aggregated groups. For this scenario, the analyst needs current-month rows only, grouped by customer_id, with SUM(amount) computed per customer and filtered to totals greater than 10,000. This aligns with Snowflake SQL behavior documented for SELECT, GROUP BY, and HAVING clauses.

  • A. Incorrect.

    Incorrect. Aggregate filters such as SUM(amount) > 10000 cannot be placed in the WHERE clause because WHERE is evaluated before grouping and aggregation. In Snowflake SQL, conditions on aggregated results must be placed in the HAVING clause.

  • B. Correct.

    Correct. This query first filters rows to the current month in the WHERE clause, then groups rows by customer_id, calculates SUM(amount) for each customer, and finally uses HAVING to keep only customers whose monthly total exceeds 10,000. This matches the required one-row-per-customer result.

  • C. Incorrect.

    Incorrect. The query selects amount without aggregating it, even though the requirement is to return the customer's total sales. Also, HAVING amount > 10000 applies to a non-aggregated column and does not correctly test the summed monthly sales per customer. This reflects a common mistake of confusing row-level filtering with group-level filtering.

  • D. Incorrect.

    Incorrect. The clause order is invalid. In a SELECT statement, WHERE must appear before GROUP BY, not after it. Also, although Snowflake supports using aliases in some clauses, the invalid statement structure makes this query incorrect.

SnowPro Associate: Platform Question 302

Single answer○ Use of SELECT statements

A data analyst needs to return one row per customer from a Snowflake table named ORDERS. For each customer, the analyst wants the most recent order based on ORDER_TS, and the result should include CUSTOMER_ID, ORDER_ID, ORDER_TS, and TOTAL_AMOUNT. If two orders for the same customer have the exact same ORDER_TS, returning either of those tied rows is acceptable. Which SELECT statement best meets this requirement?

  1. A

    SELECT CUSTOMER_ID, ORDER_ID, ORDER_TS, TOTAL_AMOUNT FROM ORDERS QUALIFY ROW_NUMBER() OVER (PARTITION BY CUSTOMER_ID ORDER BY ORDER_TS DESC) = 1;

  2. B

    SELECT CUSTOMER_ID, MAX(ORDER_TS) AS ORDER_TS, ORDER_ID, TOTAL_AMOUNT FROM ORDERS GROUP BY CUSTOMER_ID;

  3. C

    SELECT DISTINCT CUSTOMER_ID, ORDER_ID, ORDER_TS, TOTAL_AMOUNT FROM ORDERS ORDER BY ORDER_TS DESC;

  4. D

    SELECT CUSTOMER_ID, ORDER_ID, ORDER_TS, TOTAL_AMOUNT FROM ORDERS WHERE MAX(ORDER_TS) OVER (PARTITION BY CUSTOMER_ID) = ORDER_TS;

Show answer and explanation

Correct answer: A

Explanation

The best solution is to use a window function together with QUALIFY. In Snowflake, QUALIFY filters the results of window functions after those functions are computed, making it ideal for scenarios such as returning the latest row per customer. The pattern ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ... DESC) = 1 is widely used for this requirement. GROUP BY with MAX() is suitable for returning the maximum value itself, but not the other non-aggregated columns from the same row unless additional logic is used. DISTINCT does not solve a greatest-per-group problem. Also, Snowflake does not allow window functions directly in the WHERE clause; QUALIFY is the intended feature for that use case. This aligns with Snowflake documentation on SELECT, window functions, and the QUALIFY clause.

  • A. Correct.

    Correct. ROW_NUMBER() assigns a sequence within each CUSTOMER_ID partition ordered by ORDER_TS descending, so the most recent row gets 1. QUALIFY filters on the result of the window function in the same SELECT statement, which is a common Snowflake pattern for top-N per group queries. Because ties are acceptable, ROW_NUMBER() is appropriate even though it picks one of the tied rows arbitrarily unless a secondary sort key is added.

  • B. Incorrect.

    Incorrect. This query is not valid as written because ORDER_ID and TOTAL_AMOUNT are selected without being aggregated or included in the GROUP BY clause. More importantly, even if it were rewritten, a simple GROUP BY with MAX(ORDER_TS) does not automatically return the full row associated with that maximum timestamp.

  • C. Incorrect.

    Incorrect. DISTINCT removes duplicate full rows, not duplicate customers. Ordering the result by ORDER_TS DESC does not ensure only the latest row per CUSTOMER_ID is returned. This is a common misconception when trying to get one row per business key.

  • D. Incorrect.

    Incorrect. This uses a window function in the WHERE clause, which is not allowed in Snowflake. Window function results must be filtered using QUALIFY, or by nesting the SELECT in a subquery/CTE and then applying a WHERE filter in the outer query.

SnowPro Associate: Platform Question 303

Single answer○ Use of SELECT statements

A data analyst needs to produce a report showing the 10 most recent orders for each customer from the SALES_ORDERS table. The table contains CUSTOMER_ID, ORDER_ID, ORDER_TS, and ORDER_TOTAL. The analyst wants a single query that returns only the latest 10 orders per customer, sorted by CUSTOMER_ID and newest ORDER_TS first. Which query should be used?

  1. A

    SELECT CUSTOMER_ID, ORDER_ID, ORDER_TS, ORDER_TOTAL FROM SALES_ORDERS QUALIFY ROW_NUMBER() OVER (PARTITION BY CUSTOMER_ID ORDER BY ORDER_TS DESC) <= 10 ORDER BY CUSTOMER_ID, ORDER_TS DESC;

  2. B

    SELECT CUSTOMER_ID, ORDER_ID, ORDER_TS, ORDER_TOTAL FROM SALES_ORDERS WHERE ROW_NUMBER() OVER (PARTITION BY CUSTOMER_ID ORDER BY ORDER_TS DESC) <= 10 ORDER BY CUSTOMER_ID, ORDER_TS DESC;

  3. C

    SELECT CUSTOMER_ID, ORDER_ID, ORDER_TS, ORDER_TOTAL FROM SALES_ORDERS GROUP BY CUSTOMER_ID, ORDER_ID, ORDER_TS, ORDER_TOTAL HAVING ROW_NUMBER() OVER (PARTITION BY CUSTOMER_ID ORDER BY ORDER_TS DESC) <= 10 ORDER BY CUSTOMER_ID, ORDER_TS DESC;

  4. D

    SELECT TOP 10 CUSTOMER_ID, ORDER_ID, ORDER_TS, ORDER_TOTAL FROM SALES_ORDERS ORDER BY CUSTOMER_ID, ORDER_TS DESC;

Show answer and explanation

Correct answer: A

Explanation

This question tests practical use of SELECT statements with window functions in Snowflake. To return the top N rows within each group, a common pattern is to use ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...) and then filter with QUALIFY. In Snowflake, QUALIFY is evaluated after window functions, making it the correct clause for this scenario. WHERE cannot reference window function results, and TOP/LIMIT applies to the entire result set rather than each partition. This aligns with Snowflake SQL best practices and documented behavior for SELECT, window functions, and QUALIFY.

  • A. Correct.

    Correct. In Snowflake, the QUALIFY clause is used to filter the results of window functions such as ROW_NUMBER(). PARTITION BY CUSTOMER_ID resets the row numbering for each customer, and ORDER BY ORDER_TS DESC ranks the most recent order as 1 within each customer. Using QUALIFY ... <= 10 correctly returns the latest 10 orders per customer in a single SELECT statement.

  • B. Incorrect.

    Incorrect. Window functions cannot be filtered directly in the WHERE clause because WHERE is evaluated before window functions are computed. This is a common SQL mistake. In Snowflake, QUALIFY is specifically designed for filtering rows after window functions are evaluated.

  • C. Incorrect.

    Incorrect. Although HAVING filters after grouping, this query is not appropriate because ROW_NUMBER() is a window function, not an aggregate used with GROUP BY/HAVING in this way. Adding GROUP BY here is unnecessary and changes the query semantics without solving the per-customer top-10 requirement.

  • D. Incorrect.

    Incorrect. TOP 10 limits the overall result set to 10 rows for the entire query, not 10 rows per customer. Even though Snowflake supports TOP, this query would return only 10 total orders across all customers, which does not meet the reporting requirement.

SnowPro Associate: Platform Question 304

Single answer● Use of Pre-signed URLs

A data engineering team stores daily partner extracts in an internal named stage in Snowflake. An external partner needs to download a specific file one time without being granted direct Snowflake access or cloud storage credentials. The team wants the simplest secure approach that allows temporary access to just that file. Which Snowflake feature should they use?

  1. A

    Generate a pre-signed URL for the staged file and send the URL to the partner

  2. B

    Create a storage integration for the partner so they can access the file directly in cloud storage

  3. C

    Grant the partner USAGE on the stage and SELECT on the source table so they can download the file through Snowflake

  4. D

    Create a secure view over the staged file and share it with the partner using Secure Data Sharing

Show answer and explanation

Correct answer: A

Explanation

Pre-signed URLs are the best fit when a staged file must be shared temporarily with someone who does not have Snowflake access. In Snowflake, a pre-signed URL can be generated for files in stages backed by supported cloud storage, enabling controlled, time-limited access to the exact file. This aligns with the principle of least privilege because the recipient gets access only to that file for a limited time, rather than broad access to a stage, Snowflake account, or cloud storage environment. By contrast, storage integrations are for Snowflake's access to external storage, grants on stages require Snowflake users and privileges, and Secure Data Sharing is for database objects rather than file downloads. Snowflake documentation on stages and GET_PRESIGNED_URL describes this capability and its intended use for temporary file access.

  • A. Correct.

    Correct. A pre-signed URL provides time-limited access to a specific file in a stage-backed cloud storage location without requiring the recipient to have Snowflake credentials or direct cloud provider credentials. This is the practical choice when a team needs to let an external party download a staged file temporarily and with minimal setup.

  • B. Incorrect.

    Incorrect. A storage integration is used by Snowflake to securely access external cloud storage on behalf of Snowflake, not as a lightweight way to grant an external partner one-time access to a single file. It is more administrative overhead and does not directly solve the requirement of sending a temporary download link to a non-Snowflake user.

  • C. Incorrect.

    Incorrect. Granting stage access would require the external partner to have a Snowflake user/account and appropriate privileges. The scenario explicitly says the partner should not be granted direct Snowflake access. Also, SELECT on the source table is unrelated to downloading an already staged file.

  • D. Incorrect.

    Incorrect. Secure Data Sharing is for sharing database objects such as tables, views, and secure views between Snowflake accounts. It is not the mechanism for sharing a single staged file for direct download. A staged file is not exposed through a secure view in the way described.

SnowPro Associate: Platform Question 305

Single answer● Use of Pre-signed URLs

A data engineering team stores daily CSV exports in an internal named stage called @finance_exports. An external auditor needs temporary read-only access to download one specific file directly, but the security team does not want to grant the auditor a Snowflake user account or broad access to the stage. Which approach best meets this requirement?

  1. A

    Generate a pre-signed URL for the specific staged file and share that URL with the auditor.

  2. B

    Grant USAGE on the stage to PUBLIC so the auditor can download the file without authentication.

  3. C

    Create a secure view over the staged file and send the auditor the view name.

  4. D

    Copy the file into a table, grant SELECT on the table to the auditor, and let them query it through a trial account.

Show answer and explanation

Correct answer: A

Explanation

Pre-signed URLs in Snowflake are used to provide time-limited access to a specific file in a stage, which is ideal when an external party needs to download staged data without receiving a Snowflake login or stage privileges. This is a common secure-sharing pattern for staged files. The key benefit is least-privilege access: only the targeted file is exposed for a limited time. In contrast, granting stage access broadly violates security best practices, and secure views are for database objects rather than direct staged-file downloads. This aligns with Snowflake documentation on stage file access and the use of pre-signed URLs for controlled external access.

  • A. Correct.

    Correct. A pre-signed URL is designed for temporary access to a specific file in a stage without requiring the recipient to authenticate to Snowflake. This fits the requirement for limited, read-only access to one file and avoids granting broader privileges or creating a user account.

  • B. Incorrect.

    Incorrect. Granting access to PUBLIC would be overly permissive and is not an appropriate way to provide controlled temporary access to a single file. It also conflicts with the requirement to avoid broad access.

  • C. Incorrect.

    Incorrect. Secure views apply to table-like data access patterns, not direct file downloads from a stage. A staged file is not exposed to an external recipient simply by creating a secure view, and this does not solve the direct-download requirement.

  • D. Incorrect.

    Incorrect. This approach is unnecessarily complex, creates additional governance and account-management overhead, and does not align with the requirement to avoid creating a Snowflake user account for the auditor. It also changes the data access pattern from downloading a file to querying table data.

Timed practice exam

Take a SnowPro Associate: Platform practice test under exam conditions

65 questions in 85 minutes, drawn from this bank, with a score report and a per-question review when you finish.

Start timed exam

SnowPro Associate: Platform practice questions 301 to 367 of 367

Every question has a page with the answer and explanation. Numbers are stable, so you can bookmark or share them. The bank is split into 4 pages of up to 100 questions.

  1. 301.A data analyst needs to produce a daily report from the SALES table showing one row per customer for the...
  2. 302.A data analyst needs to return one row per customer from a Snowflake table named ORDERS. For each customer,...
  3. 303.A data analyst needs to produce a report showing the 10 most recent orders for each customer from the...
  4. 304.A data engineering team stores daily partner extracts in an internal named stage in Snowflake. An external...
  5. 305.A data engineering team stores daily CSV exports in an internal named stage called @financeexports. An...
  6. 306.A data engineering team stores monthly CSV extracts in an internal named stage in Snowflake and needs to let...
  7. 307.A data engineering team stores CSV files in an external Amazon S3 stage used by Snowflake. A business analyst...
  8. 308.A data engineering team creates a SQL UDF in Snowflake to standardize customer names before loading them into...
  9. 309.A data engineer creates a SQL UDF to standardize customer names and wants the function to work when the input...
  10. 310.A data engineer is creating a SQL UDF in Snowflake to standardize phone numbers. The function should accept a...
  11. 311.A data engineer creates a SQL UDF in Snowflake to standardize customer names from multiple source systems:...
  12. 312.A data engineering team stores customer support tickets in a Snowflake table and wants to generate a short...
  13. 313.A data engineering team stores customer support case text in a Snowflake table and wants to generate short...
  14. 314.A data engineering team stores thousands of customer support case notes in a Snowflake table named...
  15. 315.A data engineering team stores customer support cases in a Snowflake table named SUPPORTTICKETS with columns...
  16. 316.A data engineering team stores vendor contracts as PDF files in an internal stage. They want to use Snowflake...
  17. 317.A data engineering team stores scanned supplier invoices as PDF files in an internal stage. They want to...
  18. 318.A data engineering team stores vendor contracts as PDF files in an internal stage. They want to extract the...
  19. 319.A data engineering team stores vendor contracts as PDF files in an internal stage. They want to use Snowflake...
  20. 320.A data engineer is standardizing customer phone numbers stored in a VARCHAR column named RAWPHONE. The values...
  21. 321.A retail company loads product codes from multiple regional systems into Snowflake. Some source systems store...
  22. 322.A data engineer is standardizing customer phone numbers stored in a VARCHAR column named PHONERAW before...
  23. 323.A retail company loads product codes from several legacy systems into Snowflake. Some codes contain...
  24. 324.A support operations team stores incoming customer email bodies in a Snowflake table named SUPPORTEMAILS with...
  25. 325.A healthcare analytics team stores patient support emails in a Snowflake table named SUPPORTMESSAGES with a...
  26. 326.A customer support team stores incoming email bodies in a Snowflake table named SUPPORTEMAILS(emailid NUMBER,...
  27. 327.A support operations team stores incoming customer email bodies in a Snowflake table named...
  28. 328.A data engineering team wants to let analysts generate short summaries of customer support cases directly in...
  29. 329.A data engineering team is prototyping a support assistant inside Snowflake. They store product documentation...
  30. 330.A data engineering team is building an internal SQL assistant in Snowflake to help analysts draft queries...
  31. 331.A data engineering team wants to add a natural-language helper to an internal analytics app in Snowflake....
  32. 332.A retail company accidentally ran a DELETE statement against a production SALES table at 2:00 PM, removing...
  33. 333.A company accidentally ran a DELETE statement against a Snowflake table named SALESTXN at 10:05 AM, removing...
  34. 334.A retail company accidentally ran a DELETE statement that removed several days of order records from a...
  35. 335.A data engineering team accidentally ran a DELETE statement against a production Snowflake table at 2:00 PM....
  36. 336.A data engineering team accidentally ran a DELETE statement without a WHERE clause on a large production...
  37. 337.A data engineer accidentally runs a DELETE statement without a WHERE clause on a production Snowflake table...
  38. 338.A data engineering team accidentally runs a DELETE statement without a WHERE clause on a critical Snowflake...
  39. 339.A data engineering team accidentally runs a DELETE statement in Snowflake that removes several days of...
  40. 340.A data engineer accidentally runs an UPDATE statement on the SALES table at 2:05 PM, overwriting several...
  41. 341.A data engineer accidentally runs an UPDATE statement on the SALES.PUBLIC.ORDERS table at 2:00 PM,...
  42. 342.A data engineer accidentally runs a DELETE statement against the PROD.SALES.ORDERS table at 2:00 PM, removing...
  43. 343.A data engineer accidentally runs a DELETE statement against the SALES table at 2:05 PM, removing thousands...
  44. 344.A data engineering team needs to create a QA copy of the PRODDB database so testers can validate a new...
  45. 345.A development team needs a full copy of the production SALES database for testing a new reporting feature....
  46. 346.A data engineering team needs to create a test environment from the production SALESDB database so developers...
  47. 347.A data engineering team needs a full copy of the PRODDB database so they can test a schema migration without...
  48. 348.A data provider wants to make a set of reporting tables available to a partner company using Snowflake data...
  49. 349.A data provider company maintains curated reference tables in a Snowflake database and needs to share them...
  50. 350.A data provider wants to share a curated set of sales tables with an external business partner. The provider...
  51. 351.A data provider wants to share a curated set of reporting tables with an external business partner. The...
  52. 352.A data engineering team wants to enrich internal sales data with a third-party weather dataset available in...
  53. 353.A data engineering team wants to enrich internal sales data with a third-party demographic dataset available...
  54. 354.A financial analytics company subscribes to a third-party weather dataset through Snowflake Marketplace to...
  55. 355.A data engineering team wants to enrich internal sales analytics with a third-party demographic dataset from...
  56. 356.A data provider publishes a Snowflake Marketplace listing that includes a large customer table. Consumer...
  57. 357.A data provider wants to publish a Snowflake Native App to the Marketplace and make it easier for customers...
  58. 358.A data provider has published a Snowflake Native App with an attached listing in Snowflake Marketplace....
  59. 359.A data provider publishes a dataset as a Snowflake Marketplace listing and wants potential consumers to find...
  60. 360.A data provider wants to share a curated set of sales tables with several external companies using Snowflake...
  61. 361.A data provider shares a secure view through a Snowflake data share with an external business partner. After...
  62. 362.A data provider wants to share a curated set of sales tables with several external companies using Snowflake...
  63. 363.A data provider wants to share a curated sales dataset with several external companies using Snowflake Data...
  64. 364.A data provider needs to give a business partner read-only access to a set of reporting tables in Snowflake...
  65. 365.A data provider wants to give a partner read-only access to a curated sales dataset in Snowflake without...
  66. 366.A data provider needs to give a business partner read-only access to several reporting tables in Snowflake...
  67. 367.A data provider has created a private data share named SALESSHARE and added several tables from its PRODDB...