2011-04-26 37 views
2

我有一個表,其中包含每個交易的security_id和side(買入或賣出)。我想計算不同的security_id和邊組合的數量。Sql不同的行集合的Sybase行數

所以,當我做以下我得到所有符號面的列表,但我不知道如何獲得總數?

select 
    security_id, side 
from 
    trade 
group by security_id, side 

我想要的結果是1行,告訴我有多少不同的security_id,我在表中有一邊。

還有一種方法可以確定哪些security_id(s)有雙方的條目(買入和賣出)。

回答

2
Select Count(*) 
From (
     Select security_id, side 
     From trade 
     Group security_id, side 
     ) As Z 

對第二個問題:

Select security_id 
From trade 
Where side In('BUY','SELL') 
Group security_id 
Having Count(Distinct side) = 2 
+0

在第二個問題中,OP只詢問ID ,而不是他們的數量。儘管如此,你的第二個查詢確實包含了解決方案(在子查詢中)。 – 2011-04-26 22:19:19

+0

@Andriy M - 啊。你是對的。我更新了第二個查詢。 – Thomas 2011-04-26 22:30:37

0

您是否試過這樣做?

select 
security_id, side , count(*) 
    from 
     trade 
     group by security_id, side 
+0

,這將使我總對每個security_id,一邊。我想要不同的security_id的總數,邊。 – richs 2011-04-26 19:07:52

+0

嗯..我沒有一個數據庫方便測試它,但我敢肯定,由本質上是給你一個獨特的security_id和side組合。 – Kal 2011-04-26 19:11:20

+0

我現在明白了這個問題。你想用另一個選擇計數(*)(選擇security_id,side ... group ...)來包裝你的整個select。 – Kal 2011-04-26 21:49:53