2017-10-11 158 views
-1

你能帮我怎么写了以下问题的查询: 有两个表: 表人数:得到多个计数的输出在一个查询

P_id  Name  BirthDate 
1   N1  2016-08-02 
2   N2  2015-05-02 
3   N3  2013-06-01 
4   N4  2014-01-09 

表访问:(p_id的是外键表人)

Id.  Visitor_id.  P_id.  Visit_date 
1   10    1   2017-03-05 
2   11    2   2017-01-01 
3   10    2   2017-02-03 
4   12    3   2016-05-07 
5   11    4   2016-04-09 
6   10    1   2017-04-09 

我们会得到由每个访问者访问计数,并在过滤器上计数访问不同的人对这些人的年龄是谁在1和2之间,2间和每个访问者在visit_date的日期3 ID。 结果应该是这样的:

    Under_one      Bet_one_two      Bet_two_three 
Visitor_id  VisitedCount/PersonCount  VisitedCount/PersonCount  VisitedCount/PersonCount 
10     2    1    1    1     0   0 
11     0    0    1    1     1   1 
12     0    0    0    0     1   1 

1和2之间是指减去visited_date和生日的结果(例如:2013年3月5日的结果 - 2011/06/07)是1和2之间年份。

回答

1

我不知道,如果你指定我可以给你准确地奠定了输出,但这种

SELECT 
visited.Visitor_id, 
visited.P_id, 
Int(([Visit_date]-[BirthDate])/365) AS Age, 
Count(persons.P_id) AS NumVisits 
FROM persons INNER JOIN visited ON persons.P_id = visited.P_id 
GROUP BY 
visited.Visitor_id, 
visited.P_id, 
Int((-[BirthDate]+[Visit_date])/365); 

回报

Visitor_id P_id Age NumVisits 
    10  1  0  2 
    10  2  1  1 
    11  2  1  1 
    11  4  2  1 
    12  3  2  1