使用 MySQL 从一列到多列的数据计数?
Count of data from one column into multiple columns with MySQL?
我无法理解如何将不同的活动拆分并计入单独的列中。这是开头table:
+------------+---------+
| CustomerID |Activity |
+------------+---------+
| 1 | Click |
| 1 | View |
| 1 | Inquiry |
| 2 | Click |
| 2 | View |
| 3 | Click |
| 3 | Click |
+------------+---------+
我希望能够将其转换为:
+------------+------+-------+---------+
| CustomerID | View | Click | Inquiry |
+------------+------+-------+---------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 0 |
| 3 | 0 | 2 | 0 |
+------------+------+-------+---------+
您可以使用 case statement
和 sum
,例如,
select
`CustomerID`,
sum(case when `Activity` = 'View' then 1 else 0 end) `View`,
sum(case when `Activity` = 'Click' then 1 else 0 end) `Click`,
sum(case when `Activity` = 'Inquiry' then 1 else 0 end) `Inquiry`
from `tbl`
group by `CustomerID`
order by `CustomerID`
输出为
CustomerID View Click Inquiry
1 1 1 1
2 1 1 0
3 0 2 0
我无法理解如何将不同的活动拆分并计入单独的列中。这是开头table:
+------------+---------+
| CustomerID |Activity |
+------------+---------+
| 1 | Click |
| 1 | View |
| 1 | Inquiry |
| 2 | Click |
| 2 | View |
| 3 | Click |
| 3 | Click |
+------------+---------+
我希望能够将其转换为:
+------------+------+-------+---------+
| CustomerID | View | Click | Inquiry |
+------------+------+-------+---------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 0 |
| 3 | 0 | 2 | 0 |
+------------+------+-------+---------+
您可以使用 case statement
和 sum
,例如,
select
`CustomerID`,
sum(case when `Activity` = 'View' then 1 else 0 end) `View`,
sum(case when `Activity` = 'Click' then 1 else 0 end) `Click`,
sum(case when `Activity` = 'Inquiry' then 1 else 0 end) `Inquiry`
from `tbl`
group by `CustomerID`
order by `CustomerID`
输出为
CustomerID View Click Inquiry
1 1 1 1
2 1 1 0
3 0 2 0