2017-02-23 74 views
0

好日子再次給所有SQL大師:)SQL-使用COUNT查詢的問題

我有一個問題查詢我的表使用COUNT。

這是表(tblstudentoffense)內的數據

enter image description here

而這正是我想要的(假設存在offenseType後,新的一列,將算偷竊,結果博彩進攻

enter image description here

這可能嗎?如果可能的話親切地與你提供的代碼添加一個解釋。謝謝:)

+0

請閱讀[postgresql-performance](http://stackoverflow.com/tags/postgresql-performance/info)然後** [編輯] **您的問題並提供缺少的信息。 –

+1

什麼樣的數據隱藏在黑色方塊後面? –

+0

@a_horse_with_no_name我使用的是phpMyAdmin的MySQL – Mark

回答

1

使用子查詢得到數量和連接具有主要的select語句數

SELECT DISTINCT OffenseType + ' ' + CAST(B.Cnt AS VARCHAR) , 
Othercolumn1,Othercolumn2 
FROM Your_tableName A 
JOIN 
(
    SELECT COUNT(*) Cnt , StudentId 
    FROM Your_tableName 
    GROUP BY StudentId 
) B ON B.StudentId = A.StudentId 
+0

這與預期輸出不符。 –

+0

我稍後再試這個。謝謝回覆。 – Mark

0

嘗試使用CONCAT_WS() .The CONCAT_WS()功能是用來連接兩個或多個字符串用分隔符。

注:offensetypeCount是具有預期輸出新列。

SELECT *,CONCAT_WS(' ',offensetype,count(offenseType) AS offensetypeCount FROM tblstudentoffense GROUP BY offensetype; 
+0

當你在groupby中只有攻擊類型字段時,可以選擇*嗎? – GrabNewTech

+0

當然可以。 –

+0

我不認爲使用select子句 – GrabNewTech

0

這是你在找什麼:

WITH SRC AS 
    (SELECT 'STEALING' OFFENSETYPE,'1' STUDENTID FROM DUAL UNION ALL 
    SELECT 'STEALING' OFFENSETYPE,'1' STUDENTID FROM DUAL UNION ALL 
    SELECT 'STEALING' OFFENSETYPE,'1' STUDENTID FROM DUAL UNION ALL 
    SELECT 'STEALING' OFFENSETYPE,'1' STUDENTID FROM DUAL UNION ALL 
    SELECT 'GAMING' OFFENSETYPE,'1' STUDENTID FROM DUAL UNION ALL) 
    SELECT OFFENSETYPE,STUDENTID,COUNT(*) FROM SRC GROUP BY OFFENSETYPE,STUDENTID; 
+0

我會在稍後嘗試。謝謝回覆。 – Mark

0

你可以嘗試

SELECT CONCAT(offensetype, ' ', COUNT(offensetype)) AS offenseType, 
     studentid, 
     offenseln, 
     offensefn, 
     offensemn, 
     offensesuffixname 
FROM tblstudentoffense 
GROUP BY offensetype, 
      studentid, 
      offenseln, 
      offensefn, 
      offensemn, 
      offensesuffixname; 

我在這個環節http://rextester.com/WZGW41761創建了一個示例。

+0

我會稍後再試這個。謝謝回覆。 – Mark

+0

根據你的例子。你的代碼適合結果,我想要:-)給所有誰給他們的答案我會測試他們,但現在我將使用Trung Duong代碼,因爲我明白他的一些代碼:-)謝謝 – Mark