データ分析クラスを使用してこの問題を解決しようとすると問題が発生しました。人口予測の年数の違いを見つけるためのクエリを作成します(Y2016 - 私のデータセットのY2015)。最新の年(私のデータセットのY2016)が10Kを超えて減少していない限り、すべての値を100絶対値に丸めて表示すると、これらの値は負である必要があります。数値にマイナス記号を追加する場合
私は私がCASE文を取得する方法を見つけ出すことができない私の結合文SELECT s.StateName, c.Y2016, c.Y2015, round((abs(Y2016 - Y2015)), -2) AS Difference
FROM StateCensus AS c
INNER JOIN States AS s
WHERE s.StateID = c.YearID
ORDER BY Difference DESC;
としてこれを持っているのMac OS X 10.12
に、MYSQL 6.3.9を使用してい
差異の列に入る作業を行います。
SELECT Y2016, Y2015, round((Y2016 - Y2015), -2) as Test,
CASE
WHEN Y2015 >= (Y2016 + 10000) THEN round((Y2016 - 2015), -2)
ELSE round((abs(Y2016 - Y2015)), -2)
END as Difference
FROM StateCensus;
テスト用の実際の値を確認するためにテスト列を追加しました。そして、私はYXXXカラムをメインクエリに入れたら、それをエイリアスする必要があることを知っています。私はちょうど今正しい値を取得する方法を理解しようとしています。
私は上記のCASEで実行すると、負である必要がある3つの行があるはずです。 [テスト]列には正しい値が表示され、[差異]列には3つの負の行を除くすべての正しい値が表示されます。私はそれが違いのコラムで何をしているのか分かりません。これは、負でなければならない3行のうちの1つです。
Y2016 Y2015 Test Difference
12801539 12839047 -37500 -12799500
Iも
SELECT Y2016, Y2015, round((Y2016 - Y2015), -2) as Test,
CASE
WHEN (Y2016 - Y2015) >= -10000 THEN round((abs(Y2016 - 2015), -2) * -1
ELSE round((abs(Y2016 - Y2015)), -2)
END as Difference
FROM StateCensus;
を試みこの1差分列が負の値を有する方法オフ彼らがどうあるべきかからのすべてとオフも多いです。私は最初のCASEステートメントで正しい方向に進むと思う。
私はIF THENを使用する必要がありますか?私はこれを試したときに、構文エラーのために動作させることができませんでした。
SELECT s.StateName, c.Y2016, c.Y2015,
IF(c.Y2015 >= (c.Y2016 + 10000), SELECT -1 * round((abs(c.Y2016-c.Y2015)), -2), SELECT round((abs(c.Y2016 - c.Y2015)), -2) AS Difference
FROM StateCensus c
INNER JOIN States AS s
WHERE s.StateID = c.YearID
ORDER BY Difference DESC;
誰かが正しい方向に私を指すことができれば、私は、私の頭皮と私が引っ張ってきた髪と同じように、とても感謝されます。
これは単なる誤植です。あなたの最初の試みでは、 ' - Y2015'の代わりに' - 2015'を書きました。それは正常に動作するはずです。 'IF'の試みでは、' select'キーワードを含めてはいけません。 'IF(c.Y2015> =(c.Y2016 + 10000)、-1,1)* round( abs(c.Y2016-c.Y2015))、-2)AS差異 – trincot
あなたは素晴らしいです!私は私の誤植を修正したとしても(私は私のクエリを見てあまりにも多くの時間を費やしたと思う)、それは間違った答えを与えたように、CASE文の使用を停止しました。だから、私はIFステートメントを調整してSELECTSを取り出し、それは動作します!あなたは私の頭皮を救った! – vbchomp
答えとして投稿しました。 – trincot