计算每天不同列值的数量

时间:2011-07-02 20:43:52

标签: mysql

我有一张桌子:

`tasks` (`id`, `url_id`, `task`, `date`)

task可以获取值:1,2,3。date是一个unix时间戳。如何获取一个数据,说明在url_id = 1的日常工作中执行了多少任务。预期结果是:

{`count_task_1`: 30, `count_task_2`: 14, `count_task_3`: 30, `date`='2011-03-12'}, [..]

这样的内容会告诉我当天url_id = 1的所有参赛作品的数量:

SELECT COUNT(`id`) FROM `tasks` WHERE `url_id`=1 GROUP BY DATE(FROM_UNIXTIME(`date`));

我看到的唯一选项:多个查询或子查询(几乎相同)。

2 个答案:

答案 0 :(得分:0)

感谢jink帮助我解决这个问题。

SELECT `task`, COUNT(`id`) `count`, DATE(FROM_UNIXTIME(`date`)) `date` FROM `tasks` WHERE `url_id`=3 GROUP BY `task`, DATE(FROM_UNIXTIME(`date`));

答案 1 :(得分:0)

您可以在 上使用这种高性能技巧来处理不同的值:

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(和许多其他dbs)中的true1false0,所以条件的SUM()是计数为true