Mysql 每天计算不同列值的数量
我有一张桌子:Mysql 每天计算不同列值的数量,mysql,Mysql,我有一张桌子: `tasks` (`id`, `url_id`, `task`, `date`) 任务可以获取值:1、2、3。日期是unix时间戳。在url_id=1的情况下,如何获取表示每天执行多少任务的数据。预期结果是: {`count_task_1`: 30, `count_task_2`: 14, `count_task_3`: 30, `date`='2011-03-12'}, [..] 类似的内容将为我提供当天url_id=1的所有条目数: 我看到的唯一选项是:多个查询或几乎相同
`tasks` (`id`, `url_id`, `task`, `date`)
任务可以获取值:1、2、3。日期是unix时间戳。在url_id=1的情况下,如何获取表示每天执行多少任务的数据。预期结果是:
{`count_task_1`: 30, `count_task_2`: 14, `count_task_3`: 30, `date`='2011-03-12'}, [..]
类似的内容将为我提供当天url_id=1的所有条目数:
我看到的唯一选项是:多个查询或几乎相同的子查询。感谢jink帮助我解决了这个问题
SELECT `task`, COUNT(`id`) `count`, DATE(FROM_UNIXTIME(`date`)) `date` FROM `tasks` WHERE `url_id`=3 GROUP BY `task`, DATE(FROM_UNIXTIME(`date`));
可以使用此高性能技巧以不同的值为轴心旋转:
SELECT
SUM(task_id = 1) as count_task_1,
SUM(task_id = 2) as count_task_2,
SUM(task_id = 3) as count_task_3,
DATE(FROM_UNIXTIME(`date`)) as date
FROM tasks
WHERE url_id=1
GROUP BY 4;
这是因为在mysql和许多其他数据库中,true为1,false为0,所以条件的总和就是它为true的计数。你太离谱了。这甚至没有给出所要求的专栏。你还没有解决任何问题:问题是需要一个支点。
SELECT
SUM(task_id = 1) as count_task_1,
SUM(task_id = 2) as count_task_2,
SUM(task_id = 3) as count_task_3,
DATE(FROM_UNIXTIME(`date`)) as date
FROM tasks
WHERE url_id=1
GROUP BY 4;