2017-02-23 11 views
0

もう一度、すべてのSQLの達人にお疲れ様でした:)SQL - COUNTクエリを使用したときのトラブル

COUNTを使用してテーブルをクエリする際に問題があります。

これは、テーブルの内部データ(tblstudentoffense)

enter image description here

であり、これは私が(のは、窃盗をカウントしますoffenseType後の新しい列があるとしましょう欲しい結果であり、賭博犯

enter image description here

が、このことは可能ですか?親切にご提供されたコードと説明を追加可能な場合。おかげで:)

カウントを取得し、メインのselect文でカウント連結するサブクエリを使用し
+0

[postgresql-performance](http://stackoverflow.com/tags/postgresql-performance/info)を読んで**あなたの質問を**編集して、不足している情報を提供してください。 –

+1

ブラックアウトした四角の後ろには、どのような種類のデータが隠れていますか? –

+0

@a_horse_with_no_name私はphpMyAdminによってMySQLを使用しています – Mark

答えて

1

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

セパレータを持つ2つの以上の文字列を結合するために使用されているCONCAT_WS()【選択CONCAT_WS()機能を使用してみてください。

注:offensetypeCountは、期待される出力を持つ新しい列です。

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

groupbyの犯罪防止フィールドのみを使用している場合は*を選択できますか? – GrabNewTech

+0

もちろん可能です。 –

+0

私はグループではないフィールドは選択句 – 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

あなたは、私がこのリンクhttp://rextester.com/WZGW41761でサンプルを作成しました

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

を試みることができます。

+0

あとで試してみます。返信いただきありがとうございます。あなたの例に基づいて – Mark

+0

。あなたのコードは私が望む結果に合っています:-)答えを出したすべての人に私はそれらをすべてテストしますが、私は彼のコードの少しを理解して以来、私はTrung Duongコードを使用します:-)ありがとう – Mark

関連する問題