0

私は、t-sql でクエリによるグループを作成することに慣れています。t-sqlgroup byでは、同じカテゴリテキストを持つアイテムがグループ化されたリストが生成され、同じタイプのテキストを持つカテゴリ テキスト グループ内のアイテムがグループ化されます。しかし、それはここで起こっていることではないようです:

Select   "CategoryText", "TypeText"
from "NewOrleans911Categories"
group by "CategoryText", "TypeText";

これはpostgresからの出力です。NA がグループ化されないのはなぜですか?

    CategoryText; TypeText
    "BrokenWindows";"DRUG VIOLATIONS"
    "NA";"BOMB SCARE"
    "Weapon";"DISCHARGING FIREARMS"
    "NA";"NEGLIGENT INJURY"
4

3 に答える 3

2

t-sql のグループ化では、同じカテゴリテキストを持つアイテムがグループ化されたリストが生成され、同じタイプのテキストを持つカテゴリ テキスト グループ内のアイテムがグループ化されます。

SQL では、order by 句を使用しない限り、クエリによって返される行の順序は指定されていません。通常、クエリによって返された順序で行を取得しますが、これはクエリ プランに完全に依存します。(私が知っている限り、t-sqlもそれを行います。)

とにかく、欠落している order by 句を追加して、期待される結果を得る必要があります。

Select   "CategoryText", "TypeText"
from "NewOrleans911Categories"
group by "CategoryText", "TypeText"
order by "CategoryText", "TypeText";

または(これがあなたが実際に探しているものだと思います) group by を order by 句に置き換えます。

Select   "CategoryText", "TypeText"
from "NewOrleans911Categories"
order by "CategoryText", "TypeText";
于 2013-11-03T20:43:29.583 に答える
0

次のようなクエリが必要な場合があります。

select distinct on ("CategoryText") "CategoryText", "TypeText"
from "NewOrleans911Categories"

ステートメントgroup byに含まれていない列を選択できないためです。group by

于 2013-11-03T19:00:36.400 に答える