1

以下の値とのリンクとしてテーブルがあります

++++++++++++++++++++++++++
+ company_id +  industry +
++++++++++++++++++++++++++
+     1      +    a      +
+     2      +    b      +
+     3      +    a      +
+     4      +    c      +
+     5      +    a      +
+     6      +    c      +
+     7      +    a      +
++++++++++++++++++++++++++

a はカウント 4、c はカウント 2、b はカウント 1

のクエリを返したい

++++++++++++++++++++++++++
+ company_id +  industry +
++++++++++++++++++++++++++
+     1      +    a      +
+     3      +    a      +
+     5      +    a      +
+     7      +    a      +
+     4      +    c      +
+     6      +    c      +
+     2      +    b      +
++++++++++++++++++++++++++
4

2 に答える 2

4

以下のクエリでは、 ごとにレコード数を個別にカウントするサブクエリを使用していますindustry。その結果は、元のテーブルに再び結合され、サブクエリからの合計数によってレコードが並べ替えられます。

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT industry, COUNT(*) totalCount
            FROM    tableName
            GROUP BY industry
        ) b ON a.industry = b.industry
ORDER BY b.totalCount DESC, a.company_ID ASC

INDEXパフォーマンスを高速化するには、 on columnを追加しますindustry

于 2013-02-23T17:44:41.210 に答える
0

これも試すことができます。各業界の発生をグループとして数えています。次に、その番号でグループ化します。(SQLFIDDLEは非常に便利なツールです)

デモ

select a.company_id, a.industry,
      (select count(*) as cnt from tbl b
       where a.industry = b.industry) as order_by
 from tbl a
 order by order_by desc;
于 2013-02-23T18:29:06.463 に答える