2

テーブルからビュー、増加、増加率を選択したいのですが、一意の ID のみを表示します。必要な情報は得られるが、必要以上の情報が得られ、結果を絞り込めない。

次のデータがあります。

+------------+------------+-------+-------+
| datum      | youtube_id | views | likes |
+------------+------------+-------+-------+
| 2012-10-07 |     123456 |   100 |   100 |
| 2012-10-07 |      98765 |   200 |   200 |
| 2012-10-08 |     123456 |   150 |   150 |
| 2012-10-08 |      98765 |   300 |   300 |
| 2012-10-09 |     123456 |   300 |   300 |
| 2012-10-09 |      98765 |   500 |   500 |
+------------+------------+-------+-------+

そして、次の sql ステートメント:

SELECT 
id, 
startcount, 
endcount, 
(endcount - startcount)increasing, 
((endcount - startcount) / ( startcount ) *100)percentChange
FROM (SELECT youtube_id AS id, views AS startcount
    FROM charts
    WHERE datum =  '2012-10-08')startRange,
(SELECT views AS endcount
FROM charts
WHERE datum =  '2012-10-09')endRange

これにより、次の結果が得られます。

+--------+------------+----------+------------+---------------+
| id     | startcount | endcount | increasing | percentChange |
+--------+------------+----------+------------+---------------+
| 123456 |        150 |      300 |        150 |      100.0000 |
|  98765 |        300 |      300 |          0 |        0.0000 |
| 123456 |        150 |      500 |        350 |      233.3333 |
|  98765 |        300 |      500 |        200 |       66.6667 |
+--------+------------+----------+------------+---------------+

期待される結果は次のようになります。

+--------+------------+----------+------------+---------------+
| id     | startcount | endcount | increasing | percentChange |
+--------+------------+----------+------------+---------------+
| 123456 |        150 |      300 |        150 |      100.0000 |
|  98765 |        300 |      500 |        200 |       66.6667 |
+--------+------------+----------+------------+---------------+

私はグループ化または結合を見てきましたが、これを理解できず、すでに数日間これをやり直していますが、ループに陥っています。

誰かが私を正しい方向に向けるか、私を助けてくれるなら、それは素晴らしいことです!

4

1 に答える 1

1

SQL フィドル

SELECT 
    c1.youtube_id id, 
    c1.views startcount, 
    c2.views endcount, 
    c2.views - c1.views increasing, 
    (c2.views - c1.views) * 100 / c1.views percentChange
FROM 
    charts c1
    inner join
    charts c2 on c1.youtube_id = c2.youtube_id
WHERE 
    c1.datum = '2012-10-08' and c2.datum =  '2012-10-09'

編集:増加を変更しました

于 2012-10-14T15:31:44.210 に答える