SQL聚合输出

时间:2013-01-19 06:53:21

标签: sql group-by

将下表视为具有大约1,00,000条记录的多个表的复杂嵌套查询的输出,我将此查询用作子查询,并在我的主查询中将其命名为People

    NAME    Age
    Dave    30
    Susan   32
    Susan   27
    Amy     22
    Amy     23
    Amy     20

我希望上表的输出为

    NAME    Count1   Age
    Dave    1        30
    Susan   2        32
    Susan   2        27
    Amy     3        22
    Amy     3        23
    Amy     3        20

使用我的查询SELECT Name, COUNT(Name) AS Count1 FROM People group by Name 我得到输出:

    NAME    Count1
    Dave    3
    Susan   3
    Amy     3  

所以上面的查询必须修改... People是一个巨大的子查询,我不想在我的主SQL查询中多次使用它...

我是SQL的新手,你的任何帮助都会非常有帮助......

2 个答案:

答案 0 :(得分:0)

这应该做:

SELECT name,
   (SELECT count(*) FROM mytable t WHERE t.name = name) AS count1,
   age
FROM mytable

答案 1 :(得分:0)

您可以像这样加入同一个表:

SELECT P.name, counts, age FROM People P
JOIN (SELECT Name, COUNT(NAME) AS COUNTS FROM People GROUP BY NAME) P1
ON P.Name = P1.Name;

See this SQLFiddle