1

私の現在のテーブルでは、comp_nameに基づいて列の平均を取得しようとしていますが、以下が出力です

    "Comp_Name"         "No_of_Rows"    "Column1_Avg"   "Column2_Avg"   "Column3_Avg"
    "Company1 Pty Ltd"  "291"           "39"            "60"            "0"
    "Company1 Pty."     "1699"          "23"            "76"            "0"
    "Company2 Ltd"      14335"          "6"             "82"            "10"
    "Company2 "         "4335"          "60"            "8"             "2"
    "Company3 Pty Ltd"  "767"           "22"            "77"            "0"
    "Company3"          "1628"          "16"            "82"            "1"

「Company1 Pty Ltd」と「Company1 Pty」を平均化することができます。(および他の会社の場合)しかし、行数を追加しますか?

私の選択クエリは以下のとおりです。基本的には、特定の値に基づいて平均を計算し、テーブルで使用可能な会社名に基づいてグループ化しています

    SELECT Comp_Name,count(*) as No_of_Rows,
    CAST(   (COUNT(CASE WHEN Column1 < 500 then 1 else NULL end)/COUNT(mytable.ID)) * 100 AS CHAR(2))+'%' as Column1_Avg,
    CAST(   (COUNT(CASE WHEN (Column1 < 30000 AND Column1 > 500) then 1 else NULL end)/COUNT(mytable.ID)) * 100 AS CHAR(2))+'%' as Column2_Avg,
    CAST(   (COUNT(CASE WHEN (Column1 > 30000)  then 1 else NULL end)/COUNT(mytable.ID)) * 100 AS CHAR(2))+'%' as Column3_Avg
    FROM mytable
    GROUP BY Comp_Name desc

期待される出力:

    "Comp_Name"         "No_of_Rows"    "Column1_Avg"   "Column2_Avg"   "Column3_Avg"
    "Company1"          "1990"          "31"            "68"            "0"
    "Company2"          "18670"         ".."            ".."            "6"
    "Company3"          "2395"          ".."            ".."            ".."

company_name のリストとその置換を使用して、ある種の参照テーブルを使用できますか?

4

1 に答える 1

2

句の最初の単語だけを取得したい場合はGROUP BY、次を使用できます。

GROUP BY CASE LOCATE(''、Comp_Name)WHEN 0 THEN Comp_Name ELSE LEFT(Comp_Name、LOCATE(''、Comp_Name))END

次に、参照テーブルを作成する場合は、次のようなクエリで問題ありません。

SELECT DISTINCT Comp_Name、CASE LOCATE(''、Comp_Name)WHEN 0 THEN Comp_Name ELSE LEFT(Comp_Name、LOCATE(''、Comp_Name))END AS Simple_Comp_Name
mytableから
Simple_Comp_Nameによる注文
于 2012-05-18T06:10:47.297 に答える