2016-07-28 47 views
1

我真的不知道如何搜索這個,可能很容易做到,但我不知道該怎麼做。 我有一個SQL表:SQL選擇行的計數>某些數字

| c1 | c2 | c3 | c4 | c5 | 
data data data data data 

所以我5列,現在我想選擇以下只用行(C1,C2,C3),其中該行出現在5倍以上表 事情是這樣的:

Select c1, c2, c3 
    From table 
    having count(*) > 5 and (all in that count, all rows must have the same values on c1, c2, c3) 

只能用basical SQL查詢做到這一點。不允許使用函數,聲明等。 不知道我是否很好地解釋自己。

+0

你應該寫你的數據集和你預期的結果的一個例子,這將有助於一堆。 – Jakumi

回答

2

沒有絕對的把握我理解,但我的猜測是

select c1, c2, c3 
from <yourtable> 
group by c1, c2, c3 
having count(*) > 5 
+0

不,我不想要所有值區域相等的行。我想要不同數量的行,其中第1行等於第2行。 – Elsendion

+0

@Elsendion或只是刪除where子句 –

0

這個查詢從原始表,其c1c2返回的所有記錄,並c3組合值出現在重複超過5倍。我還將結果集中的實際數量包括在內。

SELECT t1.c1, t1.c2, t1.c3, t1.c4, t1.c5, t2.cardinality 
FROM yourTable t1 
INNER JOIN 
(
    SELECT c1, c2, c3, COUNT(*) AS cardinality 
    FROM yourTable 
    GROUP BY c1, c2, c3 
    HAVING COUNT(*) > 5 
) t2 
    ON t1.c1 = t2.c1 AND 
     t1.c2 = t2.c2 AND 
     t1.c3 = t2.c3 
0

只是把C1,C2,C3作爲一個字符串C1 + C2 + C3:

SELECT c1, c2, c3 FROM table WHERE 
c1 || c2 || c3 IN (
    SELECT c1 || c2 || c3 FROM table 
    GROUP BY c1 || c2 || c3 
    HAVING COUNT(*) > 5);