如何将UNION与COUNT一起使用

drc15

我有这个表结构:

TABLE: PERSON     TABLE: CAR

PersonID          PersonID | CarID
------            ---------|---------
1                 1        | 51
                  1        | 52


TABLE: PET          TABLE: AGE

PersonID | PetID    Person | AgeID
---------|----      -------|----
1        | 81       1      | 20
1        | 82
1        | 81

一个人可以养许多辆汽车和宠物,但只有一个年龄。

我想计算某人拥有的汽车数量,计算某人拥有的宠物数量,并列出其年龄。

这是我到目前为止的内容:

select
    car.personid as person,
    count(car.carid) as cars,
    null as pets
from car
where car.personid = 1
group by car.personid

union all

select
    pet.personid as person,
    null as cars,
    count(pet.petid) as pets
from pet
where pet.personid = 1
group by pet.personid

这将产生:

Person | Cars | Pets
-------|------|-----
1      | 2    | null
1      | null | 3

但我希望结果看起来像这样:

Person | Cars | Pets | Age
-------|------|------|----
1      | 2    | 3    | 20

这里有一个小提琴:http ://sqlfiddle.com/#!3/ f584a/1/0

我完全停留在如何将记录放入一行并添加年龄列的问题上。

MT0

SQL小提琴

查询1

SELECT p.PersonID,
       ( SELECT COUNT(1) FROM CAR c WHERE c.PersonID = p.PersonID ) AS Cars,
       ( SELECT COUNT(1) FROM PET t WHERE t.PersonID = p.PersonID ) AS Pets,
       a.AgeID AS Age
FROM   PERSON p
       LEFT OUTER JOIN
       AGE a
       ON ( p.PersonID = a.PersonID )

结果

| PersonID | Cars | Pets | Age |
|----------|------|------|-----|
|        1 |    2 |    3 |  20 |

查询2

WITH numberOfPets AS (
  SELECT PersonID,
         COUNT(1) AS numberOfPets
  FROM   PET
  GROUP BY PersonID
),
numberOfCars AS (
  SELECT PersonID,
         COUNT(1) AS numberOfCars
  FROM   CAR
  GROUP BY PersonID
)
SELECT p.PersonID,
       COALESCE( numberOfCars, 0 ) AS Cars,
       COALESCE( numberOfPets, 0 ) AS Pets,
       AgeID AS Age
FROM   PERSON p
       LEFT OUTER JOIN AGE a ON ( p.PersonID = a.PersonID )
       LEFT OUTER JOIN numberOfPets t ON ( p.PersonID = t.PersonID )
       LEFT OUTER JOIN numberOfCars c ON ( p.PersonID = c.PersonID )

结果

| PersonID | Cars | Pets | Age |
|----------|------|------|-----|
|        1 |    2 |    3 |  20 |

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在CakePHP 3中如何将COUNT(*)与find('list')一起使用?

来自分类Dev

laravel 5.2如何将count查询与where查询一起使用

来自分类Dev

如何将地图与休眠注释一起使用

来自分类Dev

如何将MySQL REPLACE与变量一起使用?

来自分类Dev

如何将NSOperationQueue与NSURLSession一起使用?

来自分类Dev

如何将Cayley与Postgres后端一起使用?

来自分类Dev

如何将ContextFlyout与ListView一起使用?

来自分类Dev

如何将ActiveModelSerializer与group_by一起使用?

来自分类Dev

如何将requestAnimationFrame与TypeScript对象一起使用?

来自分类Dev

如何将Silex授权与OpenID一起使用?

来自分类Dev

如何将Sinon与Typescript一起使用?

来自分类Dev

如何将Viewholder与ExpandableListView一起使用?

来自分类Dev

如何将IN与块而不是对象一起使用?

来自分类Dev

如何将PostgreSQL与JSONB数据一起使用

来自分类Dev

如何将QVector与多个对象一起使用

来自分类Dev

如何将CSS calc()与继承一起使用?

来自分类Dev

如何将XCTAssertNil与可选结构一起使用?

来自分类Dev

如何将AdControl与多个AdUnitId一起使用?

来自分类Dev

如何将DataContractJsonSerializer与auth令牌一起使用

来自分类Dev

如何将Jest与React Native一起使用

来自分类Dev

如何将componentsSeparatedByString与多个对象一起使用

来自分类Dev

如何将TomcatEmbeddedServletContainerFactory与AbstractAnnotationConfigDispatcherServletInitializer一起使用

来自分类Dev

如何将TIdWhois与SOCKS代理一起使用

来自分类Dev

如何将ltrace与通配符一起使用

来自分类Dev

如何将Pikaday与ReactJS一起使用?

来自分类Dev

如何将Fuseki与Jena TDB一起使用

来自分类Dev

如何将DDPClient与Promise一起使用?

来自分类Dev

如何将`GridSpec()`和`subplots()`一起使用

来自分类Dev

如何将ArgumentOutOfRangeException与多个参数一起使用?

Related 相关文章

  1. 1

    在CakePHP 3中如何将COUNT(*)与find('list')一起使用?

  2. 2

    laravel 5.2如何将count查询与where查询一起使用

  3. 3

    如何将地图与休眠注释一起使用

  4. 4

    如何将MySQL REPLACE与变量一起使用?

  5. 5

    如何将NSOperationQueue与NSURLSession一起使用?

  6. 6

    如何将Cayley与Postgres后端一起使用?

  7. 7

    如何将ContextFlyout与ListView一起使用?

  8. 8

    如何将ActiveModelSerializer与group_by一起使用?

  9. 9

    如何将requestAnimationFrame与TypeScript对象一起使用?

  10. 10

    如何将Silex授权与OpenID一起使用?

  11. 11

    如何将Sinon与Typescript一起使用?

  12. 12

    如何将Viewholder与ExpandableListView一起使用?

  13. 13

    如何将IN与块而不是对象一起使用?

  14. 14

    如何将PostgreSQL与JSONB数据一起使用

  15. 15

    如何将QVector与多个对象一起使用

  16. 16

    如何将CSS calc()与继承一起使用?

  17. 17

    如何将XCTAssertNil与可选结构一起使用?

  18. 18

    如何将AdControl与多个AdUnitId一起使用?

  19. 19

    如何将DataContractJsonSerializer与auth令牌一起使用

  20. 20

    如何将Jest与React Native一起使用

  21. 21

    如何将componentsSeparatedByString与多个对象一起使用

  22. 22

    如何将TomcatEmbeddedServletContainerFactory与AbstractAnnotationConfigDispatcherServletInitializer一起使用

  23. 23

    如何将TIdWhois与SOCKS代理一起使用

  24. 24

    如何将ltrace与通配符一起使用

  25. 25

    如何将Pikaday与ReactJS一起使用?

  26. 26

    如何将Fuseki与Jena TDB一起使用

  27. 27

    如何将DDPClient与Promise一起使用?

  28. 28

    如何将`GridSpec()`和`subplots()`一起使用

  29. 29

    如何将ArgumentOutOfRangeException与多个参数一起使用?

热门标签

归档