2017-06-19 7 views
0

私はいくつかのキーワードのランキングを見ており、URLのランクが上がっているランクが下がっているため、同じランクのキーワードの数を戻す必要があります。私のデータは次のようになります。mysqlでCOUNTIF式を実行するには

URL | Keyword | Position | Previous position | Keyword Movement 

example.com/page1 | things to do london | 38 | 101| Up 
example.com/page2 | mens shoes size 8  | 48 | 94 | Up 
example.com/page3 | notebooks    | 22 | 2 | Down 
example.com/page4 | macbook pros for sale | 52 | 52 | Same 
example.com/page1 | homebrew supplies  | 56 | 46 | Down 
example.com/page2 | sql tutorials   | 70 | 39 | Down 
example.com/page3 | random seo keywords | 88 | 36 | Down 
example.com/page4 | best albums of 2017 | 94 | 95 | Up 
example.com/page5 | fender stratocaster | 19 | 9 | Down 
example.com/page6 | qotsa     | 91 | 34 | Down 

ノー、キーワードの数が増加し、URLを示す表を持っているしたいと思います。キーワードの減少、および減少同じキーワードのExcelではこれはcountif式で行うことができますが、mysqlでこれを行う方法はわかりません。私は、テーブルには、次のように見てみたい:私は「運動」の欄にCOUNTIFを行うための方法を探してい

URL |Keywords Up |Keywords Down |Keywords remain 


example.com/page1 | 1 | 1 | 0 
example.com/page2 | 1 | 1 | 0 
example.com/page3 | 0 | 2 | 0 
example.com/page4 | 1 | 0 | 1 
example.com/page5 | 0 | 1 | 0 
example.com/page6 | 0 | 1 | 0 

ありがとうございました。

+0

本質的に、ピボットテーブルを作成することです。リンクされた重複するトピックは、静的(事前に列の数がわかっている - これはおそらくあなたのケースです)と動的(列の数はあらかじめわかっていません)の両方のピボットを記述します。ただし、アプリケーション・ロジックでSQLコードよりも変換を実行する方が効率的である可能性があります。 – Shadow

答えて

1

Movement列でcondtional aggregationを使用し、URLでグループ化して3種類の移動を集計できます。

SELECT 
    URL, 
    SUM(CASE WHEN Movement = 'Up' THEN 1 ELSE 0 END) AS keywords_up, 
    SUM(CASE WHEN Movement = 'Down' THEN 1 ELSE 0 END) AS keywords_down, 
    SUM(CASE WHEN Movement = 'Same' THEN 1 ELSE 0 END) AS keywords_remain 
FROM yourTable 
GROUP BY URL 
関連する問題