gpt4 book ai didi

mysql - MySQL 中有条件的几个 COUNT

转载 作者:太空宇宙 更新时间:2023-11-03 12:34:52 25 4
gpt4 key购买 nike

我目前正在使用一些其他统计数据来计算点击率,例如登录访客的百分比等。

到目前为止,我已经尝试了很多不同的 SQL 查询,但目前我仍然坚持这样做:

SELECT COUNT(*) AS totalhits,
COUNT(DISTINCT ip) AS visitors,
COUNT(user_id > 0) AS hitsloggedin,
COUNT(DISTINCT ip, user_id > 0) AS visitorsloggedin
FROM db.tblhits

显然这是错误的。尽管有些行的 user_id 为 0,但我在第三个和第四个 COUNT 语句中计算了所有行。不过,前两个语句工作得很好。

我敢肯定现在有人在笑他的屁股,但这是我尝试过的。

任何朝着正确方向的插入都将不胜感激!

最佳答案

根据 COUNT(<strong><em>expr</em></strong>) 记录:

Returns a count of the number of non-NULL values of expr in the rows retrieved by a SELECT statement.

第三种情况 expr user_id > 0 , 它是非 NULL当该表达式的计算结果为 TRUEFALSE ;因此 COUNT() 的结果不是你所期望的。

因为 MySQL 没有真正的 bool 类型,而是使用 10对于 TRUEFALSE分别,你可以简单地使用 SUM() 反而;在其他 RDBMS 中,您必须使用 CASE expression :

COUNT(CASE WHEN user_id > 0 THEN 1 ELSE NULL END)

对于你的第四个表达式,你可以这样做:

COUNT(DISTINCT CASE WHEN user_id > 0 THEN ip ELSE NULL END)

关于mysql - MySQL 中有条件的几个 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13642893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com