我有一张 table ,看起来像,
VisitorId date deviceType
1 2018-12-11 mobile
2 2018-12-11 mobile
3 2018-12-11 desktop
4 2018-12-11 mobile
1 2018-12-12 desktop
2 2018-12-12 mobile
1 2018-12-20 mobile
2 2018-12-20 tablet
...
每一行记录一个新访客的信息。
我正在尝试编写一个查询来输出基于日期的移动设备/台式机/平板电脑的数量。 预期的输出应该如下所示
date numOfDesktop numOfTablet numOfMobile
2018-12-11 1 0 3
2018-12-12 1 0 1
2018-12-20 0 1 1
...
我写过这样的SQL,但是语法不对。
SELECT
date,
COUNT(deviceType= "mobile") As numOfMobile,
COUNT(deviceType= "desktop") AS numOfDesktop,
COUNT(deviceType= "tablet") AS numOfTablet
FROM
tableName
GROUP BY date
ORDER BY date ASC
我没有 SQL 方面的经验,有人可以帮我设计一个有效的 SQL 查询吗?
最佳答案
您的想法是正确的,尽管如您所见,这不是有效的语法。不过,您可以使用 case
表达式:
SELECT
date,
COUNT(CASE deviceType WHEN 'mobile' THEN 1 END) As numOfMobile,
COUNT(CASE deviceType WHEN 'desktop' THEN 1 END) AS numOfDesktop,
COUNT(CASE deviceType WHEN 'tablet' THEN 1 END) AS numOfTablet
FROM
tableName
GROUP BY date
ORDER BY date ASC
关于mysql - 如何编写 SQL 来统计移动/平板/桌面用户的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53920398/