2013-08-19 17 views
-3

基本上,我想知道Excel的COUNTIF的SQL相當於重複(範圍,條件)計數每行出現無視

我想這個輸出的

CALL ID | Name | Phone Number | # of Occurrences  
    0001 | Name1 | 0000000000 |  2  
    0002 | Name2 | 1111111111 |  1  
    0003 | Name1 | 0000000000 |  2  
    0004 | Name3 | 2222222222 |  2  
    0005 | Name5 | 4444444444 |  1  
    0006 | Name4 | 3333333333 |  1  
    0007 | Name3 | 2222222222 |  2 

不是這個輸出

CALL ID | Name | Phone Number | # of Occurrences  
    0001 | Name1 | 0000000000 |  2  
    0002 | Name2 | 1111111111 |  1  
    0004 | Name3 | 2222222222 |  2  
    0005 | Name5 | 4444444444 |  1  
    0006 | Name4 | 3333333333 |  1  

這是一個簡化表。這是我的複雜表,這是結果 Result

我想什麼是避免2個約會,而是在不同的行中列出它們,這樣的任命是隻有1

下面是該查詢

SELECT 
a."Call ID" as "Call ID", 
CONCAT(a.Campaign, '-', a."CONTACT ID") as IDENTIFIER, 
REPLACE(a."Campaign",'CW-','') as "Campaign", 
a."DNIS" as "DNIS", 
a."CONTACT ID" as "CONTACT ID", 
a."first_name" as "first_name", 
a."last_name" as "last_name", 
a."city" as "city", 
a."street" as "street", 
a."zip" as "zip", 
a."state" as "state", 
a."number2" as "number2", 
a."number1" as "number1", 
a."Customer ID - real" as "Customer ID - real", 
COUNT(a."Call ID") as "Dial Attempts" 
FROM "Five9 Calls" a 
group by 
CONCAT(a.Campaign, '-', a."CONTACT ID"), 
REPLACE(a."Campaign",'CW-',''), 
a."CONTACT ID", 
a."first_name", 
a."last_name", 
a."city", 
a."street", 
a."zip", 
a."state", 
a."number2", 
a."number1" 
+1

請包括嘗試解決方案,爲什麼他們沒有工作,以及預期的結果。 – Kermit

+0

我的嘗試解決方案太長,我只是簡化它到這一個。讓我編輯 –

回答

1

Declan的答案爲您提供了鏈接到每個電話號碼(每個電話號碼一行)的名稱數量。

如果保持相同的行數(即與您在問題中描述的佈局相同的佈局)很重要,則可以使用OVER子句。

SELECT NAME, [PHONE NUMBER], COUNT(NAME) OVER (PARTITION BY [PHONE NUMBER]) AS OCCUR 
FROM YOURTABLE 

隨着OVER沒有必要爲GROUP BY

+0

不妨試試這個。另一個答案也是正確的,但在某些時候,這不是我想要的輸出。因爲它仍然通過電話號碼分組。我其實有一個很長的查詢,但我只是簡化了這一點。 –

+0

我已經嘗試過了,上面的代碼(我更新了帖子),以及與此替換它: COUNT(一個「呼叫ID」)OVER(PARTITION BY CONCAT(a.Campaign,「 - 」,一個」聯繫人ID「),REPLACE(a。」Campaign「,'CW - ',''),a。」聯繫人ID「,a。」first_name「,a。」last_name「,a。」城市「,a。街道」,一個‘拉鍊’,一個‘國家’,一個‘號碼2’,一個‘數字1’)作爲‘嘗試撥號’ 通過移除組,它只是返回一行 –

+0

是的,真正的代碼是總是比概念更毛茸茸;)它有用嗎? – jods

0

如果你需要每個電話號碼,這是我可以從你的數據蒐集的次數的計數,你可以使用以下。

SELECT [PHONE NUMBER],COUNT(NAME) AS OCCUR 
FROM YOURTABLE 
GROUP BY [PHONE NUMBER] 
+0

但它只返回不同的值。 我希望它返回所有的值。這是我想要的確切輸出。 –

0
select call_id, name, phone_number, count() over (partition by name, phone_id order by name asc, phone_id asc) occur 
From yourtable