在customer表中,它有customer_ID,name,sex,age,representative_id。我想找一位代表最年轻的男女客户。
我用过
SELECT *,MIN(年龄)来自客户GROUP BY Rep_ID,性别;
但它返回每组的第一条记录。如何在特定条件下从组中选择特定行?在这种情况下,年龄=该组的最小(年龄)。我应该使用加入吗?任何人都可以给我一个提示。提前谢谢。
C_ID Name Sex Age Rep_ID
1 Person1 F 26 H3
2 Person2 M 40 H8
3 Person3 M 37 H5
4 Person4 F 51 H5
5 Person5 M 45 H5
6 Person6 F 37 H8
7 Person7 M 27 H8
8 Person8 M 36 H3
9 Person9 F 35 H5
10 Person10 M 30 H8
11 Person11 F 22 H3
12 Person12 F 28 H8
13 Person13 F 19 H3
14 Person14 M 41 H3
15 Person15 M 33 H5
16 Person16 F 34 H3
17 Person17 M 29 H8
18 Person18 F 50 H8
答案 0 :(得分:4)
要解决这样的问题,首先需要为每位代表找到最年轻的男/女年龄。您可以使用MIN()
功能并按性别分组和重复ID,如下所示:
SELECT rep_id, sex, MIN(AGE) AS youngestAge
FROM myTable
GROUP BY rep_id, sex;
了解每个组中最年轻的年龄后,您可以将该子查询加入原始表中以获取其余信息:
SELECT m.*
FROM myTable m
JOIN(
SELECT rep_id, sex, MIN(age) AS youngestAge
FROM myTable
GROUP BY rep_id, sex) tmp ON tmp.rep_id = m.rep_id AND tmp.sex = m.sex AND tmp.youngestAge = rep.age;
有关此问题及类似问题的详细信息,请参阅this页。