Home >Database >Mysql Tutorial >How to Efficiently Select Max Date Rows with Non-Zero Check Values in SQL?
Extracting Maximum Date Rows with Non-Zero Check Amounts in SQL
This example demonstrates how to select unique groups with the most recent dates and non-zero check values from a dataset containing groups, dates, and monetary values (cash and checks).
An initial attempt using this query proved insufficient:
<code class="language-sql">SELECT group, MAX(date), checks FROM table WHERE checks > 0 GROUP BY group ORDER BY group DESC</code>
This query returned all dates and check values for each group, not just the data from the row with the maximum date.
The solution involves a two-step approach:
First, we identify the maximum date for each group with non-zero check values:
<code class="language-sql">SELECT group, MAX(date) AS max_date FROM table WHERE checks > 0 GROUP BY group</code>
Then, we join this result set back to the original table to retrieve the corresponding checks
(and other relevant columns) for those maximum date rows:
<code class="language-sql">SELECT t.group, a.max_date, t.checks FROM table t INNER JOIN ( SELECT group, MAX(date) AS max_date FROM table WHERE checks > 0 GROUP BY group ) a ON a.group = t.group AND a.max_date = t.date;</code>
This inner join ensures only rows matching both the maximum date and non-zero check criteria are included in the final output.
Best Practice: Using descriptive and non-reserved words for column names (e.g., group_id
instead of group
) improves code readability and reduces the risk of errors.
The above is the detailed content of How to Efficiently Select Max Date Rows with Non-Zero Check Values in SQL?. For more information, please follow other related articles on the PHP Chinese website!