2015-07-31 4 views

ответ

1

Этот запрос должен работать:

select sum(a.total) from (
select date_format(created_at,'%Y-%m-%d') as date, 
(select count(*) from tb_media where date_format(created_at,'%Y-%m-%d') = date) as total 
from tb_media group by date) as a 
1

Ну, у вас есть 2 возможных запросов. Просто один (если вы хотите, в общей сложности вам не нужны остальные запроса):

SELECT COUNT(*) FROM tb_media 

менее прост:

SELECT SUM(t.total) 
FROM (select date_format(created_at,'%Y-%m-%d') as date, 
(select count(*) from tb_media where date_format(created_at,'%Y-%m-%d') = date) as total 
from tb_media group by date) AS t; 
1

Если я понять ваши требования, то вам нужно подсчитывать записи на основе даты, а также получать их сумму в конце, а ваш столбец created_on - тип даты. Если это правильно, то вы можете использовать ниже query-

SELECT IFNULL(DATE_FORMAT(created_at,'%Y-%m-%d'),'Total') AS rep_date, 
COUNT(*) total FROM tb_media 
GROUP BY created_at WITH ROLLUP; 
+0

Если он работает для вас, то вы можете пометить его ваш выбор зеленый тик. –

0

Не уверен, что и как вы хотите, чтобы ваши выходные данные, но моя догадка вы хотите табличный список с указанием даты и подсчет каждого дня и сумма в конце таблицы? Если это так, то это будет работать:

(select date_format(created_at,'%Y-%m-%d') as date,count(*) 
from tb_media group by date) 
union 
(select 'Total',count(*) from tb_media) 

или если вы хотите только сумма всех записей, запрос будет

SELECT COUNT(*) FROM tb_media 
1

Вы можете попробовать эту родственную:

SELECT 
    DATE_FORMAT(created_at, '%Y-%m-%d') AS `date`, 
    COUNT(<put_table_key_here>) AS `total` 
FROM 
    tb_media 
GROUP BY 
    `date`; 

Примечание

  • Используйте первичный ключ или любой ключ в таблице для подсчета указанных записей
  • Atleast, избегать использования подзапроса, когда вы ожидаете производительность в сценарии