程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql實現關聯訂單統計

mysql實現關聯訂單統計

編輯:MySQL綜合教程

mysql實現關聯訂單統計


1、要求如下

收貨人 收貨地址 訂單號 用戶ID

張三 北京 1001 1

張四 上海 1002 2

張五 北京 1003 3

張六 廣州 1004 4

張三 深圳 1005 5

張七 上海 1006 6

現在有這樣的一個需求,每一行假定是一條訂單記錄,收貨人和收貨地址字段任意一項與其他訂單一致,即認為是關聯訂單
如果關聯訂單大於3條,就把這條訂單對應的用戶ID記錄下來。最終要的就是用戶ID的列表。
比如:**訂單號1001和訂單號1005的收貨人都是‘張三’,證明這兩條訂單是關聯訂單,而且訂單號1001和訂單號1003

需要用MySQL實現


2、實現如下:

create table order_table(
  rec_p varchar(20),
  rec_addr varchar(100),
  order_no varchar(20),
  user_id varchar(20)
);
insert into order_table(rec_p,rec_addr,order_no,user_id) values('張三','北京','1001','1');
insert into order_table(rec_p,rec_addr,order_no,user_id) values('張四','上海','1002','2');
insert into order_table(rec_p,rec_addr,order_no,user_id) values('張五','北京','1003','1');
insert into order_table(rec_p,rec_addr,order_no,user_id) values('張六','廣州','1004','3');
insert into order_table(rec_p,rec_addr,order_no,user_id) values('張三','深圳','1005','1');
insert into order_table(rec_p,rec_addr,order_no,user_id) values('張七','上海','1006','4');

select  a.* from order_table a 
,(select rec_p,count(*) pnum from order_table group by rec_p) a1
,(select rec_addr,count(*) addrnum from order_table group by rec_addr) a2
where a.rec_p=a1.rec_p and a.rec_addr=a2.rec_addr and (pnum+addrnum)>3



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved