mysql - 获取2016年提交请求的所有新用户

标签 mysql sql postgresql

假设表有十亿行数据,是否有更好的方法来扩展此问题的解决方案。我有兴趣获取 2016 年提交请求的所有新用户。

请求(request_id、request_day、user_id、userprofile_id)

SELECT DISTINCT user_id
  FROM requests
 WHERE EXTRACT( year FROM request_day ) = 2016
   AND user_id 
 NOT IN 
 ( SELECT DISTINCT user_id
     FROM requests 
    WHERE EXTRACT( YEAR FROM request_day ) <> 2016 
  );

最佳答案

我将使用以下查询来回答这个问题:

SELECT user_id
FROM requests
GROUP BY user_id
HAVING SUM(CASE WHEN YEAR(request_day) <> 2016 THEN 1 ELSE 0 END) = 0

这只会返回有 2016 年而非其他年份出现请求的用户。

关于mysql - 获取2016年提交请求的所有新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297723/

相关文章:

php - 从数组、数据库创建有效的 JSON

c# - SQL Server 和 C# 中每条记录的字符串处理

postgresql - 如何在postgres函数中将几何点作为参数传递?

postgresql - postgresql 中电话号码的数据类型

postgresql - Heroku Postgres 删除触发器未通过 Heroku Connect 复制到 Salesforce

mysql - Codeigniter - 插入批处理 - mysql

mysql - 有关查询优化的书籍?

javascript - JS 问题通过在 2 个不同的 div 框中显示获取的 MySQL 数据 [PHP, MySQL & JS]

Python MySQL 连接器无法从 SELECT 查询返回所有结果

java - 为什么 Java 中的这个存储过程调用不起作用?