mysql - 在同一个查询中选择全部和一些

标签 mysql

我有这个模式

Table Foo
user_id | time_dif | tool
1       | 1        | flurry
1       | 0        | flurry
1       | 15       | flurry
1       | 4        | flurry
1       | 5        | topler

我想要的是同时执行这两项操作的查询,不幸的是我不知道如何将它们结合起来...

select count (user_id), tool  from Foo group by tool;
> 4 , flurry
> 1 , topler

select count(user_id) from Foo where time_diff > 2 group by tool 
> 2 , flurry
> 1 , topler

我想要一个将这两者结合在一起的查询,并给我这样的结果:

> 4 , 2 , flurry
> 1 , 1 , topler

注意:我希望两个结果在同一行中返回...

最佳答案

您可以使用这样的查询:

SELECT
  tool,
  COUNT(user_id) cnt,
  COUNT(CASE WHEN time_diff>2 THEN user_id END) cnt2
FROM
  Foo
GROUP BY
  tool

如果time_diff>2,CASE WHEN会返回user_id,否则为NULL,COUNT只会统计非空值。请看 fiddle here .

关于mysql - 在同一个查询中选择全部和一些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17209561/

相关文章:

php - MySQL 中日期的混合排序

php - 密码字符限制

javascript - 数据表重新排序保存到数据库

mysql - 在 Webmatrix 上安装 Wordpress 时出现数据库错误

php - 我是否需要远程登录才能通过 php 脚本读取和写入 MySQL 数据库?

php - 比较加密密码mysql/php

sql - 如何从其他数据库记录引用特定表列?

php - 如何优化选择 300.000 行的 SQl 代码 +

php - MySQL查询使用php基于列更新多行

php - Laravel 4 - 获取 N :N Relation exists 中条目的记录