2011-08-07 12 views
0

によって:SELECT ID、名前、私の例では、駅GROUP BY「距離の近似」SQLクエリ - グループIは、クエリ持っ近似

からの距離が、距離はダブルであり、私はグループのすべての要素をしたいと思います同じ近似距離で一緒に。たとえば、距離212のelement_1は、距離240のelement_2と同じグループにありますが、300と同じグループにはありません(差は50以上です)。それを行うため

+0

200,240,280に要素があるとします.50以上離れているため、すべて同じグループに属しますか? – Andomar

+1

私はあなたが 'だけで注文 'をしたいと思う..私は間違っていますか? –

+0

また、ウィンドウ関数を使用してそれを順序付けることもできます。 – JoshRoss

答えて

0

データベースによっては、機能別にグループ化できます。

だからあなたはあなたがあなたの要件に基づいて独自の機能を追加することができます(非常にシンプルな)のようなもの

select round(distance/50) as approximate_distance, count(*) 
    from station 
    group by round(distance/50) 

を行うことができます。

+0

なぜ '/ 50'ですか?質問の例では、212と240を表示しています。 –

+0

@hogan質問がエラーを与えることを確認してください。 –

+0

元のクエリで、彼らは50マイル以内の駅でグループ化されていたので –

0

一つの方法は、50で距離を分割することである

おかげでは、その結果によって整数グループ作ります。このような

何か:(テストしていない)

SELECT floor(Distance/50) as [group], count(*) as count 
    FROM Station 
    GROUP BY floor(Distance/50) 

は、この方法の欠点の1つは、互いに近い二つの数字はまだ別のグループになり得ることです。たとえば、249の距離は251とは異なるグループになります。

このようなグループ化にはいくつかの境界点が必要になるため、要件を明確にする必要があります。アルゴリズムを設計できます。

+0

あなたは何をしているのかを列でグループ化できません! –

+0

このクエリは、距離グループごとに1つのIDとステーションのみを表示します。 –

+0

@pratik - 固定、早朝の不具合 – Hogan

関連する問題