2016-07-09 4 views
1

Я ищу помощь, используя сумму() и COUNT() в моем SQL запрос:MySQL: Sum() и Count в одном запросе?

select s1_s2,count(s1_s2) as RES 
from city_user 
where s1_s2 in (select s1_s2 from city_user) 
group by s1_s2 

результат: Image Query Result

Я хочу, чтобы сделать сумму() для колонки RES

Is это возможно?

+0

Как именно вы думаете записи текста «01-02» можно суммировать? – Sumurai8

+0

@ Sumurai8, OP говорит * Я хочу сделать сумму() для столбца RES * – Rahul

+0

Это мало смысла для меня. Если ОП просто не подсчитывает, сколько строк находится в базе данных. Это просто 'SELECT COUNT (*) FROM city_user;'. – Sumurai8

ответ

0

спасибо за ваши ответы

это то, что я хотел:

смотреть эту фотку: result

этот запрос отлично работает для меня:

select s1_s2, 
count(s1_s2) as res, 
(select sum(res) as sum from (
    select s1_s2, count(s1_s2) as res from city_user group by s1_s2) city_user) as Sum_RES from city_user group by s1_s2 
0

Возможно, вы можете использовать внешний запрос, как показано ниже, снова ваши WHERE условия не имеет смысла в качестве пункта IN принимает все значения столбца s1_s2 из тех же таблиц, которая всегда будет истинным

select *, SUM(RES) as SUM_RES 
FROM (
select s1_s2, 
count(s1_s2) as RES 
from city_user 
group by s1_s2) xxx 
0

Вашего запрос делает мало смысл. where s1_s2 in (select s1_s2 from city_user) - это просто сложный и ДЕЙСТВИТЕЛЬНО неэффективный способ написания where s1_s2 is not null.

Сумма RES столбца в основном количество всех строк в city_user, или по крайней мере те строки, в city_user, для которых s1_s2 не равно нулю. Ради людей, которые должны читать ваши запросы в будущем, в том числе себя, сделать это два запроса:

select s1_s2,count(s1_s2) as RES 
from city_user 
where s1_s2 is not null 
group by s1_s2 

и

select count(*) 
from city_user 
where s1_s2 is not null 
1

Чтобы выбрать количество индивидуальных s1_s2 дорожит следующие запрос может помочь

select s1_s2, count(s1_s2) as res 
from city_user 
group by s1_s2; 

Чтобы получить сумму УЭ колонки следующее Запрос может помочь

select sum(res) as sum 
from 
    (select s1_s2, count(s1_s2) as res 
    from city_user 
    group by s1_s1) 
city_user; 

, который так же, как

select count(s1_s2) as count 
from city_user; 

Причина: Это потому, что вы пытаетесь группы столбец на основе s1_s2 и получить его счет и сохранить его в Res колонке и вычислить его сумма, которая равна числу строк для s1_s2 в таблице.

+0

'select distinct (s1_s2)' не будет препятствовать выбору нуль, который, по-видимому, хотел выполнить вложенный запрос OP. 'select distinct (s1_s2)' с 'group by s1_s2', очевидно, не будет иметь никакого значения, потому что если два значения для' s1_s2' одинаковы, их следует сгруппировать ... – Sumurai8

+0

Да! Вы правы @ Sumurai8. Редактировал мой ответ. – lsof

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