私はSQLに完全に慣れていないので、SQLに関するStackOverflowの投稿を読んで、これを理解しようとしました。また、他のソースもあり、SQLではこれを実行できません。ここに行く...
3列と数千行のテーブルがあり、最初の2列のデータがあります。3番目の列は現在空であり、1番目と2番目の列に既にあるデータに基づいて3番目の列にデータを入力する必要があります。
最初の列に州があり、2番目の列に果物のエントリがあるとします。各果物が由来するさまざまな状態の数を計算し、この人気のある数値をすべての行の3番目の列に挿入するSQLステートメントを作成する必要があります。その行の人気数1は、果物が1つの州からのみ来ていることを意味し、人気数4は、果物が4つの州から来ていることを意味します。したがって、私のテーブルは現在次のようになっています。
state fruit popularity
hawaii apple
hawaii apple
hawaii banana
hawaii kiwi
hawaii kiwi
hawaii mango
florida apple
florida apple
florida apple
florida orange
michigan apple
michigan apple
michigan apricot
michigan orange
michigan pear
michigan pear
michigan pear
texas apple
texas banana
texas banana
texas banana
texas grape
そして、人気という名前の3番目の列を計算して更新する方法を理解する必要があります。これは、その果物を輸出している州の数です。目標は、下の表を作成することです。上の表に基づいて、「リンゴ」は4つの州すべてに表示され、オレンジとバナナは2つの州に表示され、キウイ、マンゴー、洋ナシ、ブドウは1つだけに表示されます。状態、したがってそれらの対応する人気数。
state fruit popularity
hawaii apple 4
hawaii apple 4
hawaii banana 2
hawaii kiwi 1
hawaii kiwi 1
hawaii mango 1
florida apple 4
florida apple 4
florida apple 4
florida orange 2
michigan apple 4
michigan apple 4
michigan apricot 1
michigan orange 2
michigan pear 1
michigan pear 1
michigan pear 1
texas apple 4
texas banana 2
texas banana 2
texas banana 2
texas grape 1
私の小さなプログラマーの頭脳は、ある種のスクリプトでデータをループする方法を見つけようと言っていますが、SQLとデータベースについて少し読んでみると、SQLで長くて遅いループスクリプトを書かないようです。できるかどうかさえわかりませんか?しかし、代わりに、SQLでこれを行うためのより良い/より速い方法があります。
SQLステートメントで、各行の3番目の列を計算して更新する方法を知っている人はいますか?これはここでは人気と呼ばれ、各果物が由来する状態の数に対応していますか?読んでくれてありがとう、助けてくれてとても感謝しています。
これまでのところ、以下のSQLステートメントを試しましたが、出力されますが、必要なものが得られません。
--outputs those fruits appearing multiple times in the table
SELECT fruit, COUNT(*)
FROM table
GROUP BY fruit
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC
--outputs those fruits appearing only once in the table
SELECT fruit, COUNT(*)
FROM table
GROUP BY fruit
HAVING COUNT(*) = 1
--outputs list of unique fruits in the table
SELECT COUNT (DISTINCT(fruit))
FROM table