2 GROUP BY WITH DISTINCT, SUM , COUNT: PHP MySQL

一个人想着一个人 提交于 2020-01-07 06:57:15

问题


Ref : GROUP BY WITH HAVING ( DISTINCT ) : PHP , MYSQL

I got answer (thanks @coytech) but I need one more column in it:

as per:

id | mid | pid | owgh | nwgh |
1    3      12    1.5    0.6
2    3      12    1.5    0.3
3    3      14    0.6    0.4
4    3      15    1.2    1.1
5    4      16    1.5    1.0
6    4      17    2.4    1.2 
7    3      19    3.0    1.4

I got answer

Select mid , COUNT(distinct pid) as cpid , SUM(nwgh) as totalnwgh from test GROUP BY mid

sqlfiddle : http://sqlfiddle.com/#!9/45e68/2

mid  cpid       totalnwgh
3      4          3.8
4      2          2.2 

But above I need one more column that's as below : totowgh

mid cpid        totalnwgh  totowgh
3      4          3.8        6.3 (DISTINCT value as per pid column)
4      2          2.2        3.9

where totowgh = 6.3 come by DISTINCT value as per pid column

That's mid = 3 has count 5 but distinct pid = 4 for mid=3 same way "distinct" owgh = 6.3 for mid=3 and distinct pid.

As pid=12 is count 1 time hence,

1.5 + 0.6 + 1.2 + 3 = 6.3 ( please not this is as per DISTINCT value of pid )

Please note : i need owgh value as per distinct pid or group by pid .. because if i replace value of owgh 0.6 with 1.5 then it will be 5.7 instead of 7.2 but value of owgh 0.6 belong to pid = 14 and not pid = 12 hence totalcount of owgh change ...but i need is 7.2

SEE WHAT I MEANS : sqlfiddle.com/#!9/2a53c/6


回答1:


OK, per your followup comment this is what I came up with. First get the grouping of the distinct owgh and then perform a JOIN with main query. See a demo fiddle http://sqlfiddle.com/#!9/a56e4/1

SELECT t.`mid` , 
COUNT(distinct t.`pid`) AS countmid , 
SUM(t.`nwgh`) AS totalnwgh,
xx.`totowgh`
FROM test t JOIN (
select mid, sum(owgh) as totowgh 
from (
select distinct mid, owgh from test) x
group by mid) xx ON t.`mid` = xx.`mid`
GROUP BY t.`mid`;

It will result in

mid     countmid    totalnwgh   totowgh
3          4           3.8        6.3
4          2           2.2        3.9


来源:https://stackoverflow.com/questions/32536393/2-group-by-with-distinct-sum-count-php-mysql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!