【发布时间】:2013-02-28 17:01:35
【问题描述】:
我是一个相对的 SQL 初学者,我不完全确定如何问我在问什么(所以我也不完全确定如何搜索有关它的帮助)。
我想使用SELECT 语句,该语句使用GROUP BY 子句按某个属性分组,同时引用该组选择的行。有没有办法做到这一点? (我使用的是 FWIW、SQLite3,但我认为这更多是通用 SQL 语法的问题。)
我有一张表population,其中包含有关人员和家庭的数据。每排是一个人,每个人都被分成从一到十几个的家庭。
每个家庭一个人(通常是第一个人,uid)是户主,并设置了head 列。我想GROUP BY 列household_id,并且还选择作为“头”的组中每个成员的uid。有没有办法用一个语句来做到这一切?
这是我所拥有的:
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?
有什么建议吗?提前致谢。
【问题讨论】: