【发布时间】:2019-10-18 04:21:58
【问题描述】:
我有一个 MySQL 数据集,该数据集由一位未强制执行客户要求的条件的程序员开发。当用户浏览网站时,页面计时不会单独存储在“Responses”表中,而是按每个用户存储在“Timings”表中,格式如下:
-
TimingID(int, PK, autoinc) 例如6673 -
UserID(int) 例如226 -
Website(varchar) 例如站点 1 -
Page(varchar) 例如第1页 -
StartTime(datetime) 例如2019-05-04 15:40:10 -
EndTime(datetime) 例如2019-05-04 15:40:50
使用类似的东西:
SELECT DISTINCT * FROM page_timings WHERE UserID IS NOT NULL
ORDER BY UserID, TimingID
给我排序的“Timings”数据,因为我想最初显示它,但我想将它加入另一个表以进行导出并将每个用户的数据附加到一行/用户 ID 以便在 SPSS 中处理。理想情况下,代码将创建格式为
UserID、Site1Page1_TimingID、Site1Page1_StartTime、Site1Page1_EndTime、Site1Page2_TimingID、Site1Page2_StartTime、Site1Page2_EndTime、Site2Page1_TimingID、Site2Page1_StartTime、Site2Page1_EndTime
有 2 个“站点”,一个有 8 个页面,一个有 20 个页面。用户可能会或可能不会访问特定页面,并且始终具有相同的访问顺序。由于我无法访问网络服务器或类似服务器,因此我无法在 PHP 中拼凑出一个解决方案,也无法使用数据透视表,因为 MySQL 不支持它们。我已经可能使用CASE 语句和GROUP BY,但不确定如何使事情正常进行,除了它会在@ 上使用MAX 而不是SUM 987654345@ 和 Page 名称,因为我不使用这些字段中的数字数据,或者使用 GROUP_CONCAT 和 DISTINCT?
请有人演示一下我错过了数千个 StackOverflow 答案中的哪些答案(已经花费了 30 分钟以上的时间搜索)或帮助提供特定代码以了解如何(最好)执行此操作,并解释哪些可用选项在小型 (CREATE VIEW,因为需要通过 SQLyog 或类似工具轻松地长期访问数据。
谢谢!
【问题讨论】:
-
这听起来像是 SPSS 而不是 mysql 的工作。如果这是不可能的,视图不能做任何查询不能做的事情,那么视图不会有帮助,你应该考虑动态 sql。 MYSQL 没有枢轴,但你应该谷歌 mysql 枢轴和/或 mysql 条件聚合和/或 mysql 准备语句,其中一些可能使用动态 sql
-
@portll 。 . .如果用户多次访问同一个页面怎么办?
标签: mysql sql performance foreach pivot-table