刚接触 SQL,在使用特定语句时遇到一些问题。
这是一些示例数据:
date | username
2016-01-01 | JIM
2016-01-01 | BOB
2016-01-01 | BOB
2016-01-02 | JIM
2016-01-03 | JIM
2016-01-03 | JIM
2016-01-03 | BOB
我想做的是计算每个用户名的每个不同日期,除非我希望每个日期都在其自己的列中,每个用户名的每个日期都有一个单独的计数。
我将通过 PHP 提供每个单独的日期,并希望您可以在单个 SQL 查询中返回下表:
username | 2016-01-01 | 2016-01-02 | 2016-01-03
JIM | 1 | 1 | 2
BOB | 2 | 0 | 1
到目前为止,我所能实现的只是日期、用户名和每个用户名每天计数的列表:
SELECT date,
haulier,
count(*)
FROM demo
WHERE date >= '2016-01-01' AND
date <= '2016-01-03'
GROUP BY date,
haulier
问候
最佳答案
您可以使用条件聚合:
select s.username,
sum(date = '2016-01-01') as cnt_20060101,
sum(date = '2016-01-02') as cnt_20060102,
sum(date = '2016-01-03') as cnt_20060103
from sample s
group by s.username;
如果您不知 Prop 体日期,那么您需要使用动态 SQL。您可以在 Google 上搜索“MySQL 动态数据透视”以查看如何执行此操作的示例。
关于mysql - 单个语句上的多个计数列按不同的用户名分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39052522/