help with this thread using oracle 7.3

Dear expert;

On this thread, I am using

Help with this

but I'll need help more with additional information in this regard. see examples of data below

Hello experts.

I use oracle 7.3. Therefore, I have the sample data below

create the table table_one

(

req_week varchar (1000).

Username varchar (1000).

sale number (30),

place varchar (1000).

break_sales number (30)

);

insert into table_one values ("week 1", 'John', 100, "NY", 2 ").

insert into table_one values (' week 1', 'Chris', 20, "TX", 3 ')

insert into table_one values ("week 1", "Melissa", 80, 'GOES', 4 ')

insert into table_one values (' week 2', 'Katy', 40 'SC', 1 ")

insert into table_one values (' week 2', 'Angle', 10, 'NC', 2 ')

insert into table_one values (' week 2', "Vick", 30, 'CA', 3 ')

insert into table_one values (' week 3', 'Zack', 60 'CA', 1 ")

insert into table_one values (' week 3', 'Deb', 60 'NM', 2 ')

insert into table_one values (' week 3', 'Antoine,"60,"TX", 3 ')

necessary results

I need the top 2 sales in a place a week

expected results

req_week username place sales

Week1 John 100 NY

Week1 Melissa 80'S

Semaine2 Katy 40 SC

Semaine2 Vick 30 CA

Semaine3 Zack 60 TX

Semaine3 Deb 60 NM

Note, in this particular case, if there is equality in sales, then use the break_sales column as a case. The break_sales was never a tie... it is so far the query and it does not work as expected

SELECT    d.req_week, d.username, d.sales, d.place
FROM      nikeus_report.dbo.table_one  d
,        nikeus_report.dbo.table_one  o
WHERE    d.req_week  = o.req_week
AND      d.sales    <=  o.sales   
GROUP BY  d.req_week, d.username, d.sales, d.place
HAVING    COUNT (*)  <= 2         
;

Any help is appreciated. Thank you

Hello

It seems that your existing query is very good, he's going; Just add the conditions for breaking in the WHERE clause:

SELECT d.req_week

d.username

d.sales

d.place

FROM table_one d

table_one o

WHERE d.req_week = o.req_week

AND (d.sales< >

OR (d.sales = o.sales

AND d.break_sales > = o.break_sales

)

)

GROUP BY d.req_week

d.username

d.sales

d.place

HAVING COUNT (*)<=>

ORDER BY d.req_week

COUNT (*)

;

Thanks for posting the CREATE TABLE and INSERT statements; that really helps.

Tags: Database

Similar Questions

Maybe you are looking for