簡體   English   中英

對每個ID的每一行計數一次,並獲得計數SQL Select查詢

[英]Counting each row once for each id and getting the count SQL Select query

因此,我在具有屬性cid,wid,did的表中具有一系列ID,其中該表中的條目可以為null,但是如果它們不為null,則行中的條目將相等。 這對應於電影攝制組成員的ID,作家和導演的ID。

我想要做的是選擇曾拍攝3部或以上影片的ID。 考慮它是一個for循環,我想象我有一個字典,其鍵為id,並且我想遍歷數組的每一行,在該行的字典的id中添加一個,然后我可以只使用HAVING子句選擇COUNT> = 3的子句。

我的主要問題是,即使ID連續出現多次,我也不想重復計算ID。

這是數據示例:

   cid    |   did    |   wid
----------+----------+----------
 00000027 |          |
 00000209 |          |
 00000205 |          |
 00000206 |          |
 00000207 |          |
 00000208 |          |
 00001140 |          |
 00000306 |          |
 00000307 |          |
 00000325 |          |
 00000349 |          |
 00001077 |          |
 00001078 |          |
 00001079 | 00001079 | 00001079
 00001079 | 00001079 | 00001079
 00001082 |          |
 00001083 |          |
 00001084 |          |
 00001085 |          |
 00001091 |          |
 00001092 |          |
 00001093 |          |
 00001094 |          |
 00001095 |          |
 00001096 | 00001096 |
 00001101 |          |
 00001102 |          |
 00001104 | 00001104 | 00001104
 00001104 | 00001104 | 00001104
 00001104 | 00001104 | 00001104
 00001314 |          |
 00001315 |          |
 00001316 |          |
 00001321 |          |
 00001322 |          |
 00001323 |          |
 00001328 |          |
 00001329 |          |
 00001330 |          |
 00001335 |          |
 00001336 |          |
 00001337 |          |
 00001345 |          |
 00001345 |          |
          |          | 00001344
          |          | 00000461
          |          | 00001344
          |          | 00001332

SELECT cid, count(*) "nrOfFilms"
  FROM people
 GROUP BY cid
HAVING nrOfFilms >= 3

您可以嘗試一下,首先,根據您的陳述,需要根據任何非值將所有列合並為一個。 之后,您可以輕松地應用group byhaving必須獲得所需的結果。

; with cte as (
select case when isnull(cid,0)=0 
            then case when isnull(did,0)=0 
                 then isnull(wid,0) 
                 else isnull(did,0) end
            else isnull(cid,0) end as Uid  from table
)
select distinct uid, count(1) as CountId from cte 
group by uid having count(uid)>2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM