group by 多個字段查詢結果不對的問題

2021-10-01 20:38:56 字數 1470 閱讀 2497

查詢結果集

查詢限制條件

渠道每日來訪資料

各個渠道在各個日期的來訪使用者合計值,如同一客戶在同一天來訪多次,則計為最後一次來訪的渠道

select*,

count

(channel_name) _count

from

(select

p.id,

p.`see_time`

, p.

`channel_name`

, p.

`customer_id`

, p.

`event_date`

, p.

`wx_mini_option_config_id`

, p.

`visit_register_id`

, p.

`event_point`

, p.

`hit_point_visit_register_contract`

from

channel_data_map p

inner

join

(select

max(m.see_time)

as max_see_time,

m.*from

channel_data_map m

where m.

`event_point`

='來訪'

and(

m.`event_date`

between

'2019-12-24'

and'2019-12-27'

)and

( m.

`project_id`

='3bf62a5e5da5d'

)group

by m.event_date,

m.customer_id) q

on p.see_time = q.max_see_time

where p.

`event_point`

='來訪'

and(

p.`event_date`

between

'2019-12-24'

and'2019-12-27'

)and

( p.

`project_id`

='3bf62a5e5da5d'

)) z

group

by z.channel_name;

朋友找我幫忙,剛開始採用內層的group by 查詢,雖然查詢出來了每乙個客戶每一天的唯一一條訪問記錄,但是因為mysql 分組的預設取值順序無法指定,結果集並不對。因為 group by 的max(see_time)那條記錄是

準確的,這樣一來再次和未分組前的資料進行inner join,就是我們想要的結果集了.

新的一年第一篇部落格,2020加油!

group by 多個字段

網上查了很多好像說的都對,但是囉嗦,我看著都費勁 在現實的應用場景中 如果想要統計每個班的男生 女生的數量就可以group by 班級id,性別 如下 select class.name case when students.1 then 男 else 女 end as 1,count studen...

MYSQL 分組 group by 多個字段

sql語法的規定,用了group by,則select之後的字段除聚合函式外都必須出現在group by中,你可以少於group by中的字段,但不能包含group by中沒有的字段 select subject,semester,count from subject selection group...

GROUP BY 兩個字段

create table test a varchar 10 b varchar 10 c int insert into test values a 甲 1 insert into test values a 甲 1 insert into test values a 甲 1 insert int...