我有一个简单但很大的数据库,我需要为其编写SQL语句。声明需要执行以下操作:
我的表格同时包含A
和Date
字段。我能够提取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
条款吗?
答案 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