2016-06-20 72 views
1

enter image description hereSQL查詢涉及計數,group by和子

我會根據其形成的SessionID開始和每一天,我想看看有多少行有日期是否希望在此表中的組行爲每組ReqPhone值。每組ReqPhone值將由ReqPhone的前四位數字定義。換句話說,我想知道有多少行是ReqPhone開始092509270940,有多少行是ReqPhone開始097909690955,等等等等

我一直在努力各種group bycount但仍沒有到達正確的查詢。

有人可以啓發我嗎?

更新:

在我的國家,政府指定的電信電話號碼,開始與某些數字。因此,如果您知道起始數字,您就知道有人使用哪個電信。我正在計算每天使用每個電信發送多少條消息。

+0

請更新您的問題,讓我們知道您正在嘗試解決的真正問題,謝謝。 –

+0

@TimBiegeleisen感謝您代表我解決問題。我本來期待更多的指導而不是答案。非常感謝你爲我提供幫助。我更新了我的問題。 –

+0

這裏有幾個選項。我可以查詢我的答案並使用條件聚合根據前四位數字的簽名獲得各種電信的計數。或者,原始查詢可以使用更復雜的邏輯重寫,以根據電信直接分組。 –

回答

3
SELECT SUBSTRING(ReqPhone, 1, 4), 
     DATEADD(DAY,0, DATEDIFF(DAY, 0, SessionID)) AS dayCreated, 
     COUNT(*) AS tally 
FROM yourTable 
GROUP BY SUBSTRING(ReqPhone, 1, 4), 
     DATEADD(DAY, 0, DATEDIFF(DAY, 0, SessionID)) 
+0

非常感謝Tim,但我也想根據運營商將電話號碼分組。這可以做到嗎? –

+0

我沒有看到有關運營商的任何信息。你可以在你的問題中包含這些信息嗎? –

+0

這就像是以0945,0947或0949等開頭。 –

1
SELECT LEFT(ReqPhone, 4), 
     DATEADD(DAY,0, DATEDIFF(DAY, 0, SessionID)) AS dayCreated, 
     COUNT(*) AS tally 
FROM yourTable 
GROUP BY LEFT(ReqPhone,4), 
     DATEADD(DAY, 0, DATEDIFF(DAY, 0, SessionID)) 
0

這將幫助你在ReqPhone類型來計算的行組的計數。此查詢在Oracle DB中成功運行。

SELECT COUNT(SESSIONID), REQP 
FROM (SELECT SESSIONID,SUBSTR(REQPHONE,1,4) AS REQP FROM SCHEMA_NAME.TABLE_NAME) 
GROUP BY REQP 

注意:請使用COUNT表達式中唯一的列。