oracle sql - filter out duplicate entries on condition

SheerSt

I have the following query to yield sale_price by date:

SELECT 
product_name, 
SUM(sale_price) top_sale_price, 
sale_date,
COUNT(*) count
FROM sales
WHERE sale_date IN
    (TO_DATE ('14-JUN-14', 'DD-MON-YY'),
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 1,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 7,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 2 * 7,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 3 * 7,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 4 * 7,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 5 * 7,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 6 * 7,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 7 * 7,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 8 * 7,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 9 * 7,
    TO_DATE ('14-JUN-14', 'DD-MON-YY') - 10 * 7)
GROUP BY 
product_name, 
sale_date

My results look something like this:

product_name     top_sale_price     sale_date     count
shoes            10.00              01-JUL-14     2
hat              11.00              30-JUN-14     1
shirt            12.00              24-JUN-14     3
...

I want to select only a single shirt or hat from each grouping, based on some logic. For example, say that there is a 'is_valid_purchase' row. If there is one or more item in the grouping, like in 'shoes' and 'shirt', I want to select the item with 'is_valid_purchase' set to true (note that in this example, only one of the items in the group by will have 'is_valid_purchase' set to true). How could I modify my sql to do what I've described?

Gordon Linoff

Is this what you want?

with t as (
      SELECT product_name, SUM(sale_price) top_sale_price, sale_date, COUNT(*) count
      FROM sales
      WHERE sale_date IN
          (TO_DATE ('14-JUN-14', 'DD-MON-YY'),
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 1,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 7,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 2 * 7,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 3 * 7,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 4 * 7,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 5 * 7,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 6 * 7,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 7 * 7,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 8 * 7,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 9 * 7,
          TO_DATE ('14-JUN-14', 'DD-MON-YY') - 10 * 7) and
         is_valid_purchase = 1
      GROUP BY product_name, sale_date
     )
select *
from t;

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

SQL Filter otherwise duplicate entries based on a column

From Dev

Can I write an SQL query to filter duplicate entries of a combination of columns?

From Dev

SQL Duplicate Entries (Having Blackout)

From Dev

Trying to avoid duplicate SQL entries

From Dev

Logic condition to avoid duplicate entries in stored procedure

From Dev

uniq does not clean out duplicate entries

From Dev

Kick out duplicate entries across vectors

From Dev

Filter rows in Python with duplicate condition

From Dev

FetchXML Filter out Duplicate Values

From Dev

Filter channel entries by category with nested condition

From Dev

How to filter out Hibernate log entries

From Dev

How to filter out Hibernate log entries

From Dev

How can a filter out the array entries?

From Dev

Filter out some entries for some users in SignalR

From Dev

SQL Remove duplicate parent child entries

From Dev

Duplicate entries with same insert statement in SQL Server

From Dev

Count duplicate entries in single column (SQL)

From Dev

SQL Remove duplicate parent child entries

From Dev

If Condition in Oracle SQL

From Dev

If Condition in Oracle SQL

From Dev

Oracle SQL Case with Condition

From Dev

How can I clear out duplicate entries in an archived records table

From Dev

How can I clean out duplicate entries from my PATH?

From Dev

oracle query to remove duplicate rows based on condition

From Dev

Filter out rows that contain duplicate numbers

From Dev

Filter out rows that contain duplicate numbers

From Dev

Filter out duplicate lines of tail -f

From Dev

Filter out duplicate values in array in C++

From Dev

SQL filter to keep duplicate item

Related Related

HotTag

Archive