1

昨年と今年の 2 つのテーブルがあります。

各テーブルの合計数を取得し、比較して昨年の割合を取得し、ID でグループ化する必要があります。

表2012

ID  Cate
1     a
1     b
1     c
2     a
2     b
2     c
3     c
3     e

表2013

ID   Cate
1     a
1     b
2     a
2     b
2     c
3     c
3     e
2     r
2     t
3     d
3     g

必要なレポート結果

ID   total2012    total2013    percentage
1       3              2            66%
2       3              5           167%
3       2              4           200%

前もって感謝します

ジェイソン

4

2 に答える 2

1

これを試して:

SELECT a.id,
       a.total2012,
       b.total2013,
       (b.total2013 / a.total2012 * 100) AS percentage
FROM
    (SELECT id, Count(*) AS total2012
     FROM Table2012
     GROUP BY id) a,
    (SELECT id, Count(*) AS total2013
     FROM Table2013
     GROUP BY id) b
WHERE a.id = b.id

編集

これは、最初に各テーブルのエントリを `id˙ でグループ化し、グループ化された行をカウントすることによって機能します。その後、これら 2 つの結果を結合して 1 つの結果セットに選択し、同時にパーセンテージを計算します。

明らかに、これは非常に古い MySQL バージョン (サブセレクトをサポートしていない) では機能しません。

于 2013-04-29T00:25:46.943 に答える
0

この回答は、Carko の回答を編集したものです。

テーブルデータ

ID    Cate    Year
1     a       2012
1     b       2012
1     c       2012
2     a       2012
2     b       2012
2     c       2012
3     c       2012
3     e       2012
1     a       2013
1     b       2013
2     a       2013
2     b       2013
2     c       2013
3     c       2013
3     e       2013
2     r       2013
2     t       2013
3     d       2013
3     g       2013

編集**
この SQL は egyal によって提供されます (以下のコメントを参照)
>> http://sqlfiddle.com/#!2/a8522/1/0で参照してください

これは、より優れた SQL ステートメントです。

SELECT   ID,
         SUM(Year=2012) AS total2012,
         SUM(Year=2013) AS total2013,
         100*SUM(Year=2013)/SUM(Year=2012) AS percentage
FROM     TableData
GROUP BY ID

編集終了**

以下は、この回答の元の SQL ステートメントであり、非常に効率的ではありません。xD

SELECT a.ID,
       a.total2012,
       b.total2013,
       (b.total2013 / a.total2012 * 100) AS 'percentage'
FROM
    (SELECT ID, Count(*) AS total2012
     FROM `TableData` WHERE `Year` = 2012
     GROUP BY ID) a,
    (SELECT ID, Count(*) AS total2013
     FROM `TableData` WHERE `Year` = 2013
     GROUP BY ID) b
WHERE a.ID= b.ID
于 2013-04-29T13:43:27.430 に答える