[英]Multiple where clause in sql statement?
我有一个简单的sessions
表,如下所示:
sid watchtime
1 01:07:00
2 01:07:00
3 01:34:00
4 01:36:00
5 01:36:00
6 01:59:00
7 01:59:00
8 00:00:00
9 00:00:00
10 03:42:00
11 00:16:00
12 00:49:00
13 00:55:00
14 00:00:00
15 00:05:00
16 00:05:00
现在,我想显示观看时间>=5
和观看时间<5
计数。 我尝试了以下解决方案:
SELECT count(watchtime) as lessthan_five FROM sessions
WHERE watchtime <=5
AND count(watchtime) as morethan_five
from sessions WHERE watchtime >5";
我收到以下错误:
1064-您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行“在WHERE观看时间> = 5”的会话中使用“大于”
我的代码在做什么错?
您可以使用条件聚合来获得所需的结果,这是通过在数字上下文中使用MySQL将布尔值视为1或0来实现的:
SELECT SUM(watchtime <= '00:05:00') AS lessthan_five,
SUM(watchtime > '00:05:00') AS morethan_five
FROM sessions
输出:
lessthan_five morethan_five
5 11
如果您希望行的值超过五分钟,请执行以下操作:
SELECT COUNT(*) FROM sessions WHERE watchtime >= '00:05:00'
SELECT COUNT(*) FROM sessions WHERE watchtime < '00:05:00'
如果要获取小时数以外的分钟数的行数:
SELECT COUNT(*) FROM sessions WHERE MINUTE(watchtime) >= 5
SELECT COUNT(*) FROM sessions WHERE MINUTE(watchtime) < 5
同样,这将为您提供所有观看时间的计数,其中计数<> 5:
SELECT watchtime, COUNT(*) as Num
FROM sessions
GROUP BY watchtime
HAVING COUNT(*) <> 5
您可以根据需要编辑子句。
你可以试试这个
SELECT watchtime, count(watchtime) as lessthan_five FROM sessions
WHERE watchtime <=5
AND watchtime in ( select watchtime as morethan_five
from sessions group by `category_id` having `watchtime` >5);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.