首页 > 解决方案 > 计算mysql中的行数一次分组

问题描述

如果格式错误,第一次用户非常抱歉。不知道如何完全使用这个网站。

我正在使用 php 和 MySQL。

在我的桌子上,我有客户的姓名、地址、电子邮件、他们需要的服务和总价

我希望能够计算每项服务有多少报价,按电子邮件地址分组。

因此,例如,如果 jack@john 获得 3 个“烤箱清洁”报价,然后 1 个“地毯清洁”报价,则计数将显示为 2。此时我的脚本只是选择电子邮件地址作为唯一值,而不是将这两项服务分开是不好的,因为它会丢弃统计数据。

下面是我的表 QUOTES

Email      address           service          total
jack@john  123 fake street   oven cleaning     £100
jack@john  123 fake street   oven cleaning      £85
jack@john  123 fake street   carpet cleaning   £165
ross@joey  new york street   moving cleaning   £300
ross@joey  new york street   moving cleaning   £320
emma@high  the angel street  moving cleaning   £290

$sql="select count(DISTINCT(email)) as total from quotes GROUP BY 'email', 'service' ";
$result=mysqli_query($conSent,$sql);
$data=mysqli_fetch_assoc($result);

return $data['total'];

上面给了我 3,因为它没有分离服务,但答案应该是 4。

我究竟做错了什么?我不需要返回给我的任何行数据,只需计数为一个数字,这样我就可以说 x 个月有 x 数量的唯一报价。

谢谢

标签: mysql

解决方案


计数(DISTINCT(电子邮件))

无论服务不同,都会返回“唯一”电子邮件的计数。这就是它的 Total = 3 的原因,因为分组的行只有 3 封“DISTINCT”电子邮件。

$sql="select email, service from quotes GROUP BY email, service ";
$result=mysqli_query($conSent,$sql);
return mysqli_num_rows($result);

推荐阅读