Re: Messed Up Query

From: Peter Nilsson <airia_at_acay.com.au>
Date: Mon, 28 Apr 2008 16:17:54 -0700 (PDT)
Message-ID: <c5e4077d-179e-4443-83c5-316053242535@w8g2000prd.googlegroups.com>


Mtek wrote:
> Hi,
>
> I have this query:
>
> SELECT q10.q10_count,
> vi.mgr_flag,vi.inst_type,vi.inst_num,vi.inst_cst,vi.inst_zip,vi.inst_phone,vi.url,vi.turnover,vi.hold_cnt,
> vi.date_,vi.inst_size,vi.inst_dchg,
>
> vh.ticker,vh.q0_shares,vh.q1_shares,vh.q0q1_grwth,vh.q0q1_dchg,vh.shares_out,
> mt.comp_name, sd.sector_name, p.closing
> FROM vinst vi, vhold vh, master_table mt, stock_data sd, prices p,
> (SELECT count(*) q10_count FROM vhold vh
> WHERE q1_shares = 0 GROUP BY vh.ticker) q10
> WHERE inst_name = 'Yacktman Fund'
> AND vi.inst_num = vh.inst_num
> AND vh.ticker = mt.ticker
> AND mt.m_ticker = sd.m_ticker
> AND mt.m_ticker = p.m_ticker;
>
> Take a look at the inner query in the FROM clause:
> (SELECT count(*) q10_count FROM vhold vh
> WHERE q1_shares = 0 GROUP BY vh.ticker) q10
>
> I basically need the same criteria applied as the outer query. Do I
> have to re-list the criteria? I'll have to do that count for 5
> fields. It will make this query WAY long.......

I can't tell for sure, but it sounds like you just need an analytical function in the outer query...

    count(*) over (partition by vh.ticker)

...or a selective count...

  sum(decode(vh.q1_shares, 0, 1, 0)) over (partition by vh.ticker)

--
Peter
Received on Mon Apr 28 2008 - 18:17:54 CDT

Original text of this message