私は比較的 SQL の初心者であり、求めていることを尋ねる方法が完全にはわかりません (そのため、ヘルプを検索する方法も完全にはわかりません)。
SELECT
句を使用して特定の属性でグループ化するステートメントを使用GROUP BY
し、同時にそのグループで選択された行を参照したいと考えています。これを行う方法はありますか?(私は FWIW、SQLite3 を使用していますが、これは汎用 SQL 構文の問題だと思います。)
population
人と世帯に関するデータを含むテーブルがあります。各行は人であり、人はそれぞれ 1 人から 10 人までの世帯にグループ化されます。
各世帯の 1 人 (通常は による最初の人uid
) が世帯主であり、head
列が設定されています。GROUP BY
列に移動し、グループの各メンバーの「ヘッド」をhousehold_id
選択します。uid
1つのステートメントですべてを行う方法はありますか?
ここに私が持っているものがあります:
SELECT DISTINCT household_id,
COUNT(uid) AS members /* The number of members in each household; it works */,
(SELECT uid FROM "group" WHERE head == 1) /* Only I don't know how to do this */
FROM population GROUP BY household_id;
私はこのようなことを試しましたが、私が望むものは得られませんでした:
SELECT DISTINCT household_id,
COUNT(uid) AS members,
(SELECT uid FROM population WHERE household_id == household_id AND head == 1) /* <-- here */
FROM population GROUP BY household_id;
しかし、それはもちろん;でhousehold_id
ある最初の行を選択します。household_id
つまり、テーブルの最初の行です。この特定のグループにhousehold_id
あるのみを参照するにはどうすればよいですか?DISTINCT
任意のヒント?前もって感謝します。