0

以下のようなテーブルがあります。

id | name    |    direction           |
--------------------------------------
1   Jhon       Washington, DC
2   Diego      Miami, Florida
3   Michael    Orlando, Florida
4   Jenny      Olympia, washington
5   Joe        Austin, Texas
6   Barack     Denver, Colorado

そして、特定の州に住んでいる人の数を数えたい:

Washington 2
Florida    2
Texas      1
Colorado   1

これどうやってするの?(ちなみにこれは学術的な観点からの質問です)よろしくお願いします!

4

3 に答える 3

1

Postgres は、split_part()文字列を区切り文字で分割する関数 を提供します。2 番目の部分 (コンマの後の部分) が必要です。

select split_part(direction, ', ', 2) as state, count(*)
from t
group by split_part(direction, ', ', 2);
于 2013-08-24T22:26:45.150 に答える
0

最初に、方向フィールドから状態を取得します。それができたら、それは非常に簡単です:

SELECT state, count(*) as total FROM initial_table group by state.

状態を取得するには、dbms に依存するいくつかの関数が役立ちます。言語によって異なります。

クエリの可能な疑似コード (MySQL の substring_index のような関数が与えられた場合) は次のようになります。

SELECT substring_index(direction,',',-1) as state, count(*) as total 
FROM initial_table group by substring_index(direction,',',-1)

編集: 上記のように、クエリはワシントン州に対して 1 を返す必要があります。

于 2013-08-24T22:17:52.820 に答える