我必须以这样的方式查询数据:输出https://d1sz9tkli0lfjq.cloudfront.net/items/0P0B3K1W430h131K451F/Screenshot-2019-06-22T07%3A15%3A55.665Z.png
SQL查询错误:
1055-SELECT列表的表达式#1不在GROUP BY子句中,并且 包含非聚合列'wp-local.visits.id',该列不是 功能上取决于GROUP BY子句中的列;这是 与sql_mode = only_full_group_by
不兼容
我尝试了多次查询以获得这样的输出。
SELECT *
FROM `rrp_visits`
WHERE `step_id` IN ( 235, 243, 247 )
GROUP BY `rrp_visits`.`step_id` ASC
答案 0 :(得分:0)
在*
子句中使用GROUP BY
(即所有列)不是一个好主意。在这里,您只需要选择相关的列,还需要将它们添加到GROUP BY
子句中。同样正如jarlh所建议的,ASC
与ORDER BY
子句一起使用。
要获得预期的输出,请在CASE
内使用COUNT()
:
SELECT Step_Id, COUNT(Step_Id) AS TotalVisit
,COUNT(CASE WHEN Visit_type = 'New' THEN Step_id ELSE NULL END) AS UniqueVisit
FROM rrp_visits
WHERE step_id IN ( 235, 243, 247 )
GROUP BY rrp_visits.step_id
输出:
| Step_Id | TotalVisit | UniqueVisit |
|---------|------------|-------------|
| 235 | 3 | 1 |
| 243 | 4 | 2 |
| 247 | 2 | 1 |
MySQL参考手册中的Checkout GROUP BY
子句,以进行详细说明。