MySQL SUM()、COUNT()和GROUP BY
我有一个关于MySQL的问题。请查看以下查询和结果集:MySQL SUM()、COUNT()和GROUP BY,mysql,sql,Mysql,Sql,我有一个关于MySQL的问题。请查看以下查询和结果集: SELECT `SentTo`, `Read` FROM `Emails` as t 我想知道每封邮件的邮件数量和总阅读量。我将得到未读的总减去和阅读的脚本方面,不需要它在这里 Email | Total | Read -------------------------------------- hello@mydomain.com | 3 | 1 -------------
SELECT `SentTo`,
`Read`
FROM `Emails` as t
我想知道每封邮件的邮件数量和总阅读量。我将得到未读的总减去和阅读的脚本方面,不需要它在这里
Email | Total | Read
--------------------------------------
hello@mydomain.com | 3 | 1
--------------------------------------
support@mydomain.com | 2 | 1
--------------------------------------
有什么建议吗?我已尝试对此应用子查询,但找不到合适的解决方案。Group by应该会给出所需的结果
SELECT sentTo,
Sum(READ) AS TotalRead,
Sum(CASE WHEN READ =0 THEN 1 ELSE 0) AS Unread
FROM Emails
GROUP BY sentTo
分组应给出所需的结果
SELECT sentTo,
Sum(READ) AS TotalRead,
Sum(CASE WHEN READ =0 THEN 1 ELSE 0) AS Unread
FROM Emails
GROUP BY sentTo
这应该可以使用
分组依据:
SELECT `SentTo`,
COUNT(*) Total,
SUM(`Read`=0)
FROM Emails
GROUP BY `SentTo`
这应该通过使用分组方式来实现:
SELECT `SentTo`,
COUNT(*) Total,
SUM(`Read`=0)
FROM Emails
GROUP BY `SentTo`
一个“Group by”子句可以解决这个问题,如下所示:
SELECT `SentTo`, COUNT(*) as totalSend, (totalSend - SUM(`Read`)) as totalUnread
FROM `Emails`
GROUP BY `SentTo`
“Group by”子句可以解决此问题,如下所示:
SELECT `SentTo`, COUNT(*) as totalSend, (totalSend - SUM(`Read`)) as totalUnread
FROM `Emails`
GROUP BY `SentTo`
这将SUM
读取列,而不是SUM
当它等于0时。另外,Read
在MySql中是一个保留字,需要进行转义。当Read为1时,OP需要值,正如您在第一封电子邮件获得3次读取的示例中所看到的,这是总数,即计数(*)
。例如,hello总共有3条记录,但只有1条记录的read=0。此查询返回hello和2。这将SUM
Read
列,而不是SUM
当它等于0时。另外,Read
在MySql中是一个保留字,需要进行转义。当Read为1时,OP需要值,正如您在第一封电子邮件获得3次读取的示例中所看到的,这是总数,即计数(*)
。例如,hello总共有3条记录,但只有1条记录的read=0。此查询返回hello with 2。除此之外,这是无效语法,如果它是。。。首先,您不能像这样在SELECT
查询中引用列别名。其次,COUNT(DISTINCT SentTo)
将始终等于1——OP要求的是COUNT(*)
…除了这不是有效语法之外,如果它是。。。首先,您不能像这样在SELECT
查询中引用列别名。其次,COUNT(DISTINCT SentTo)
将始终等于1——OP要求COUNT(*)
..SUM(Read=0)
条件计数+1的真正Mysql解决方案SUM(Read=0)
条件计数+1的真正Mysql解决方案