2015-08-18 2 views
1
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 

Из вышеизложенного я хочу, чтобы общее количество средних и сумов nwgh соответствовало соответствующим требованиям. ID ех: середина = 3 или середина = 4 но с отчетливой Pid, ​​но необходимо принять во внимание суммы nwgh не должен быть DISTINCTГРУППА ПО С ИСПОЛЬЗОВАНИЕМ (ОТСУТСТВУЕТ): PHP, MYSQL

Поэтому мой результат будет как показано ниже:

mid | countmid   | totalnwgh 
3  4 (DISTINCT value)  3.8 (no DISTINCT it take both value of pid =12) 
4  2      2.2 

в выше результате середины = 3 есть отсчет 4 Beause PID = 12 повторяется, следовательно, его DISTINCT но nwgh не должно быть DISTINCT, его общее количество

, что я попробовал

Select mid , COUNT(mid) as countmid , SUM(nwgh) as totalnwgh from test where mid = 3 
GROUP BY mid HAVING count(DISTINCT pid) 
+0

Трудно угадать, что вы хотите иметь. Что вы хотите получить за середину = 3, а что за середину = 4? Имея ограничение, а не – flaschenpost

+0

@flaschenpost его результат группы для mid = 3, а для середины = 4 соответственно. может быть в середине = 5, а также в списке и т. д. ... короче ниже: a 4 3.3, b 3 4.5, c 1 1.2 и т. д. на ..... где a, b, c находятся в середине в моем случае – user3209031

+0

, поэтому countmid = 4 и totalnwgh = 3.8 - ответ, который вы хотите иметь, и nwgh pid = 12 следует суммировать? – flaschenpost

ответ

3

Если я понимаю, что вы хотите, вы просто должны сделать отчетливое в вашем COUNT.

Вы можете попробовать это:

SELECT mid , 
    COUNT(distinct pid) as countmid , 
    SUM(nwgh) as totalnwgh 
FROM test 
GROUP BY mid 

Попробуйте sqlfiddle, если вы хотите: http://sqlfiddle.com/#!9/45e68/2

+0

woh .. это было так просто ... я пытался COUNT (в середине) как countmid вместо COUNT (отчетливый pid), как countmid ... спасибо ... его работа идеальна ... – user3209031

+0

эй, как я могу получить DISTINCT, но это должно быть GROUP BY pid С ВЫШЕ ВАШИМ ВОПРОСОМ .... – user3209031

+0

ПОЖАЛУЙСТА, ВИДИТЕ : http://stackoverflow.com/questions/32536393/2-group-by-with-distinct-php-myql – user3209031

0

использование этого

SELECT a.`mid`, a.cnt AS countmid, b.s AS totalnwgh 
FROM 
    (SELECT `mid`, COUNT(DISTINCT pid) AS cnt FROM test GROUP BY 1) AS a INNER JOIN 
    (SELECT `mid`, SUM(nwgh) AS s FROM test GROUP BY 1) b ON a.mid=b.mid 
+0

Почему вы должны ввести два полных подзаголовка? Это выглядит в два раза медленнее, чем ответ на coytech. – flaschenpost

+0

Я согласен, мое решение может быть лучше подходит при использовании двух разных таблиц – mynawaz

 Смежные вопросы

  • Нет связанных вопросов^_^