要计算的特定 SQL 查询 [重复]
Posted
技术标签:
【中文标题】要计算的特定 SQL 查询 [重复]【英文标题】:Specific SQL query to count [duplicate] 【发布时间】:2020-05-28 22:36:14 【问题描述】:我正在开发一个 CRM,这就是我创建杆来分隔我的用户的原因。
我创建了一个视图来收集用户的所有信息。
我想知道如何统计极点登录的用户数。
在我的视图中,我有一个 user_online
字段。
我还有一个pole_name
字段。
我尝试了这个请求,但它不起作用。
SELECT pole_name, COUNT(user_online) AS nbr_online FROM `ViewProjet_userPoleRole` GROUP BY pole_name
这给了我一个杆子的用户总数,因此如果它在线则不是。
最后,这是我的全部视图。
我已经尝试了几个请求,但我不能。
【问题讨论】:
也许您可以共享两个表的基本定义。另外你的查询结果是什么? 我刚刚编辑了我的问题。 【参考方案1】:试试这个:
SELECT pole_name, COUNT(user_id) AS nbr_online
FROM `ViewProjet_userPoleRole`
WHERE user_online = 1
GROUP BY pole_name
希望这会有所帮助
或者如果想同时显示在线和离线计数,您可以尝试以下操作:
SELECT pole_name, SUM(if(user_online = 1,1,0)) as nbr_online, SUM(if(user_online = 0,1,0)) as nbr_offline
FROM `ViewProjet_userPoleRole`
GROUP BY pole_name
试试这个。
【讨论】:
感谢您的回复。您的请求有效,但仅返回已连接用户的极点。我还需要显示所有用户都已注销的杆子。 SELECTpole_name, SUM(if(user_online = 1,1,0)) as nbr_online, SUM(if(user_online = 0,1,0)) as nbr_offline FROMViewProjet_userPoleRole
GROUP BYpole_name
非常感谢您的帮助,它也可以这样工作。
你我的代码对你有帮助,那么请点赞我的答案等等。
我刚做了,再次感谢。【参考方案2】:
我认为你可以使用条件聚合如下:
SELECT POLE_NAME, SUM(CASE WHEN USER_ONLINE = 'Y' THEN 1 ELSE 0 END) AS NBR_ONLINE FROM VIEWPROJET_USERPOLEROLE GROUP BY POLE_NAME
或者如果您只想知道至少有一个在线用户的波兰人,那么将条件放在WHERE
子句中,如下所示:
SELECT POLE_NAME, COUNT(1) AS NBR_ONLINE FROM VIEWPROJET_USERPOLEROLE WHERE USER_ONLINE = 'Y' GROUP BY POLE_NAME
如果您通过其他类型的规范代表在线用户,则在CASE
语句的WHEN
子句中相应地使用它们。
干杯!!
【讨论】:
感谢您的回复。您的请求将两极发回给我,但不是在线用户数量。我的印象是它被颠倒了,而是向我显示了离线用户的数量。 不同意!!!它正在计算USER_ONLINE = 'Y'
的记录数
“Y”是什么意思?我认为您的要求是正确的。
从我的回答中读到这一点:如果您通过其他某种规范代表在线用户,则在 CASE 语句的 WHEN 子句中相应地使用它们。
我没见过,谢谢你的澄清,我会记住这一课的!以上是关于要计算的特定 SQL 查询 [重复]的主要内容,如果未能解决你的问题,请参考以下文章