2016-11-21 10 views
1

によってグループ化します:MySQLは私に働いている小規模なプロジェクトを持っているし、次のセットアップを持っている最小、最大および最古の

MariaDB [b7_19195200_prices]> select * from watchlist; 
+----+-------------+-------+---------------------+--------+ 
| id | item  | price | recorded   | errors | 
+----+-------------+-------+---------------------+--------+ 
| 3 | 32725999014 | 1.46 | 2016-11-21 20:30:22 |  0 | 
| 4 | 32725999014 | 1.93 | 2016-11-21 20:56:21 |  0 | 
| 5 | 32725999014 | 2.01 | 2016-11-21 20:56:32 |  0 | 
| 6 |  122444 | 22.43 | 2016-11-21 21:03:19 |  0 | 
| 7 | 32725999014 | 1.11 | 2016-11-21 21:25:33 |  0 | 
+----+-------------+-------+---------------------+--------+ 
5 rows in set (0.00 sec) 

だから私はの分、価格の最大を取得したいのですが価格と最初のもの(その商品の価格の最も古い記録)です。

+----+-------+-------+-------------+----------+ 
| id | low | high | item  | original | 
+----+-------+-------+-------------+----------+ 
| 6 | 22.43 | 22.43 |  122444 | 12.11 | 
| 3 | 1.11 | 2.01 | 32725999014 | 0.51 | 
+----+-------+-------+-------------+----------+ 

低、高、元はそれぞれの項目の最低、最高、元の価格です。だから私のような結果を得るだろう。ボーナスは、それがいつ最高か最低かを知ることができるでしょう。

SELECT `id`, MIN(`price`) low, MAX(`price`) high, `item` 
FROM `watchlist` 
GROUP BY `item`; 

SELECT `id`, MIN(`recorded`), `price` original, `item` 
FROM `watchlist` 
GROUP BY item; 

とにかく、私はそれを達成することができます:私はと最高、最低、元の価格を取得するための2つの異なるクエリを使用していますか?

ありがとうございます!

+0

価格データ型はDECIMALです。 – Strawberry

+0

いいえ。私はvarcharとしてそれを入れます – wiZZmnma

+0

Ok。たぶんそれを修正! – Strawberry

答えて

1

あなたが参加

select t1.*, t2.* 
from ( 
    SELECT MIN(`price`) low, MAX(`price`) high, `item` 
    FROM `watchlist` 
    GROUP BY `item` 
) t1 
left join (
    SELECT MIN(`recorded`), `price` original, `item` 
    FROM `watchlist` 
    GROUP BY item 
) t2 on t1.`item` = t2.`item` 

を使用することができ、IDを必要としない場合は、idが副選択

select t1.*, t2.* 
from ( 
    SELECT MIN(`price`) low, MAX(`price`) high, `item` 
    FROM `watchlist` 
    GROUP BY `item` 
) t1 
left join (
    select `id`, `recorded`, `price`, `item` 
    from `watchlist` 
    where ( `item`, `recorded`) in (
     select `item`, min(`recorded`) 
     FROM `watchlist` 
     GROUP BY item 
) 
) t2 on t1.`item` = t2.`item` 

に参加して、タプルも必要な場合は、それ以外の第二は、選択becase正しいはずです行をexplicatllyし、集計されていない値の最初の結果を取得

+0

私はidを必要としません。これは、クエリのエラー(1248)に関するエラーを取得します。すべての派生テーブルには独自のエイリアスが必要です。 – wiZZmnma

+0

@wiZZmnma回答が更新されました.. from() – scaisEdge

+0

ゴールデン!どうもありがとう!受け入れられた – wiZZmnma

関連する問題