私は、年のデータをグループ化することによって、車両の装備に関連する大規模なデータセットを統合しようとしています。たとえば、データベースの特定のSKUは、2012 Hyundai Elantra GLSに適合する可能性があります。その同じSKUは、同じ車両に合うかもしれませんが、年2013、2014、および非常に小さなデータセットでは2015年に、次のクエリは、私が探しているものを実現し...:Google Big Query - 年の範囲を連結する
SELECT
sku,
CASE
WHEN MIN(YEAR) = MAX(YEAR) THEN MIN(YEAR)
ELSE CONCAT(MIN(YEAR), '-', MAX(YEAR))
END AS YEAR,
make, model, submodel, notes
FROM
(SELECT @ldfnr:= IF((@old_make = tab.make
AND @old_model = tab.model
AND @old_submodel = tab.submodel
AND @old_notes = tab.notes
AND (@old_year = tab.`year`
OR @old_year = tab.`year`-1)) , @ldfnr, @ldfnr+1) AS nr, tab.* ,
@old_make := tab.make , @old_model := tab.model ,
@old_submodel := tab.submodel , @old_notes := tab.notes ,
@old_year := tab.`year`
FROM tableName AS tab,
(SELECT @ldfnr:=0, @old_model:='', @old_submodel:='', @old_notes:='', @old_year:='', @old_make:='' ) AS tmp
ORDER BY make, model, submodel, notes, `YEAR` ASC) AS mytab
GROUP BY nr
ORDER BY nr;
しかし、私たちのデータセットはかなり大きい。このため、Google BigQueryにデータを読み込み、そこに同じクエリを実行しようとしていました。おそらくGoogle BigQueryの制限ですが、9行目の2列目のエラーを返すことになります。これがセカンダリSELECTクエリが見つかる場所です。
SQLFiddleのサンプルデータは参考にしています。
私は潜在的にこれを完了するためにAWSを使用していますが、私はそれを最初に試してみると思いました。私はあなたの時間を感謝します。 :-)以下は
編集...:
以下データが今どのように見えるかですが...:
+------+-------------+-----------+-------+----------+------------------------------------------+
| SKU | Year | Make | Model | Submodel | Notes |
+------+-------------+-----------+-------+----------+------------------------------------------+
| 0001 | 1995 - 1997 | Chevrolet | Astro | Base | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1995 - 1996 | Chevrolet | Astro | CL | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1995 - 1996 | Chevrolet | Astro | LS | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1997 | Chevrolet | Astro | LT | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 2001 | Chevrolet | Astro | Base | Clear Lens; Chrome Housing; Pair; 1 pc.; |
+------+-------------+-----------+-------+----------+------------------------------------------+
I:
以下+------+------+-----------+-------+----------+------------------------------------------+
| SKU | Year | Make | Model | Submodel | Notes |
+------+------+-----------+-------+----------+------------------------------------------+
| 0001 | 1995 | Chevrolet | Astro | Base | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1995 | Chevrolet | Astro | CL | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1995 | Chevrolet | Astro | LS | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1996 | Chevrolet | Astro | Base | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1996 | Chevrolet | Astro | CL | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1996 | Chevrolet | Astro | LS | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1997 | Chevrolet | Astro | Base | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 1997 | Chevrolet | Astro | LT | Clear Lens; Chrome Housing; Pair; 1 pc.; |
| 0001 | 2001 | Chevrolet | Astro | Base | Clear Lens; Chrome Housing; Pair; 1 pc.; |
+------+------+-----------+-------+----------+------------------------------------------+
が望ましい結果であります以前はそれを含めないと申し訳ありません!あなただけの年の範囲を連結したい場合は、(ポータブルおよびそれ以上)に容易がある:-)
サンプルを編集してサンプルデータ*と*の結果を提供してください。 MySQL特有のコードが別のデータベースで実行されると考える理由はありません。特に、変数として特注品を使用しているコード。 –
@GordonLinoffヒントをありがとう!私はもちろん、それを含めることを意味したが、それは私の心を完全にスリップした。ご協力いただきありがとうございます。 :) –
あなたは知っている可能性が高いですが、思い出したかったです:o) - 重要なので、投票の下に投稿された回答の左側にあるチェックマークを使用して、「受け付けた回答をマークする」ことができます。重要な理由については、http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235を参照してください。答えに投票することも重要です。役に立った答えを投票してください。もっとたくさんあります...誰かがあなたの質問に答えるときに何をすべきかを確認することができます - http://stackoverflow.com/help/someone-answers。 –