SQL - 计算日期范围内的重复值

时间:2017-10-31 19:10:24

标签: sql sqlite

我有一个简单但很大的数据库,我需要为其编写SQL语句。声明需要执行以下操作:

  1. 获取字段中最受欢迎的15个值。
  2. 从这15个中,获取在特定时间段内出现的值的计数。
  3. 我的表格同时包含ADate字段。我能够提取15个最受欢迎的值,或者获取给定时间段内特定值的计数。我不知道怎么把两者放在一起。

    这是我目前的SQL:

    Value

    这将是我最受欢迎的15.但是,我想显示每个SELECT Count( Value ) AS Total, Value AS Value FROM Database GROUP BY Value ORDER BY Total DESC LIMIT 15 在两个日期之间的COUNT()

    这需要Value条款吗?

2 个答案:

答案 0 :(得分:1)

我简化了之前的解决方案(也可以完成一项工作):

SELECT
  Value,
  Count(*) as TotalInPeriod
FROM Database 
WHERE Value in (SELECT Value FROM Database GROUP BY Value 
                ORDER BY count(*) DESC LIMIT 15) 
  AND date_field BETWEEN your_start_date and your_end_date
GROUP BY Value

答案 1 :(得分:0)

尝试这样的事情。创建一个内部查询,查找整体的前15个值,并将其连接到主集以将其限制为这些值。

SELECT
  Count( Value) as TotalInPeriod,
  Value as Value
FROM
  Database a
JOIN (SELECT
        Count( Value ) AS Total,
        Value AS Value 
      FROM
        Database
      GROUP BY
        Value 
      ORDER BY
        Total DESC 
        LIMIT 15) as topValues
ON
  a.Value = topValues.Value
WHERE
  a.date_field BETWEEN your_start_date and your_end_date
GROUP BY
  a.Value