SQL :获取数据以及从单个 table 一个月的计数

SQL : Getting data as well as count from a single table for a month

我正在处理一个 SQL 查询,我有一个相当大的数据集。我有下面提到的 table 数据。

现有table:

  +---------+----------+----------------------+
    | id(!PK)      | name     |      Date       |
    +---------+----------+----------------------+
    | 1       | abc      |         21.03.2015   |
    | 1       | def      |          22.04.2015  |
    | 1       | ajk      |          22.03.2015  |
    | 3       | ghi      |          23.03.2015  |
    +-------------------------------------------+

我正在寻找的是插入查询到一个空的 table。条件是这样的:

Insert in an empty table where id is common, count of names common to an id for march.

以上 table 的输出类似于

  +---------+----------+------------------------+
    | some_id      | count     |      Date      |
    +---------+----------+----------------------+
    | 1       | 2      |         21.03.2015     |
    | 3       | 1      |          23.03.2015    |
    +-------------------------------------------+

我只有:

insert into empty_table values (some_id,count,date) 
select id,count(*),date from existing_table where id=1;

不幸的是,上面的基本查询不适合这个复杂的要求。

有什么建议或想法吗?谢谢你。

更新查询

insert into empty_table  
select id,count(*),min(date) 
from existing_table  where
          date >= '2015-03-01' and
          date < '2015-04-01'
group by id;

如果我没理解错的话,你只需要一个日期条件:

insert into empty_table(some_id, count, date) 
    select id, count(*), min(date)
    from existing_table
    where id = 1 and
          date >= date '2015-03-01' and
          date < date '2015-04-01'
    group by id;

注意:table 名称后的列表包含要插入的列。使用insert . . . select时没有values关键字。

insert into empty_table  
select id, count(*) as mycnt, min(date) as mydate
from existing_table 
group by id, year_month(date);

请使用你的RDBMS提供的函数获取日期部分只包含年份和月份,因为你没有提供RDBMS版本并且它们之间的日期处理功能差异很大。

您似乎想要每个 ID 的唯一名称数量:

insert into empty_table  
select id
   ,count(distinct name)
   ,min(date) 
from existing_table 
where date >= DATE '2015-03-01'
  and date < DATE '2015-04-01'
group by id;