4

私は持っている

office

office_id    name
--------- -----------------
        1  office1
        2  office2
        3  office3

person

uid  office_id age gender
---------------------------
  1          1  20   male
  2          1  20   female
  3          1  20   male
  4          1  21   male
  5          2  20   male
  6          3  20   male

1つのクエリを使用して取得することは可能ですか

office_id    name age_20 male
-----------------------------
        1 office1      3    3  
        2 office2      1    1
        3 office3      1    1
4

1 に答える 1

9

はい、できます。MySQL はブール演算をサポートしており、これが最短の方法だと思います。より RDBMS に適したものにしたい場合は、 を使用してCASE WHEN age = 20 THEN 1 ELSE 0 ENDください。

SELECT  a.office_ID,
        a.name,
        SUM(age = 20) age_20,
        SUM(gender = 'Male') male
FROM    office a
        LEFT JOIN person b
            ON a.Office_ID = b.office_ID
GROUP   BY a.office_ID, a.name
于 2013-04-12T07:59:12.497 に答える