任務描述
會員表中資料統計注意點:
表結構說明
使用者表user
:
欄位名型別
說明約束
name
varchar
使用者名稱主鍵
ageint
年齡非空
***varchar
性別非空
ismember
int是否為會員(0
表示不是,1
表示是)
預設為0
card_id
int卡號
非空會員表member
:
欄位名型別
說明約束
card_id
int卡號
主鍵creadits
int積分
非空銷售表sales
:
欄位名型別
說明約束
name
varchar
使用者名稱非空
expense_money
int消費金額
非空退貨表back
:
欄位名型別
說明約束
card_id
int卡號
主鍵return_money
int退款金額非空
第一次用sql來做這種題目,還是學到了很多。對sql 的認識也加深了很多,還是需要多聯絡。
自己在測試過程中,將表的結構簡化了,但是需要在不影響表的行為的情況下簡化,注釋以下的為答案,注釋以上的為測試資料
create table user (
name varchar(64),
age int,
*** varchar(8),
ismember int,
card_id int
);create table member(
card_id int,
creadits int
);create table sales (
name varchar(64),
expense_money int
);create table back(
card_id int,
return_money int
);insert into user values ("yrk",18,"men",1,1);
insert into user values ("lhq",18,"men",0,2);
insert into user values ("lm",18,"men",1,3);
insert into user values ("tbr",18,"men",1,4);
insert into sales values("yrk",50);
insert into sales values("yrk",20);
insert into back values(1,25);
insert into sales values("lhq",90);
insert into back values(2,45);
insert into sales values("lm",80);
insert into back values(3,72);
insert into back values(3,5);
insert into sales values("tbr",100);
insert into member values(1,20);
#insert into member (card_id) select card_id from user where ismember = 1;
delete from member; #將member表清空
create table tmp(
card_id int,
creadits int
);delete from tmp;
#向tmp表中插入資料,將是會員的並且有消費記錄的加到tmp表中,並對card_id進行分組,避免出現會員有多次購物的情況
insert into tmp (card_id,creadits)
select a.card_id, sum(b.expense_money)
from user a, sales b
where a.ismember = 1 && b.name = a.name
group by a.card_id;
#向tmp表中插入資料,將是會員但是沒有消費記錄的加到tmp表中,實現方法是身份是會員但是不在tmp表裡的人,並將它們的creadits設定為0
insert into tmp(card_id,creadits)
select card_id,0
from user
where user.ismember = 1 and not exists(select * from tmp
where user.card_id = tmp.card_id);
#向tmp表更新資料,將會員的退款減掉
update tmp
inner join back
on tmp.card_id = back.card_id
set tmp.creadits = tmp.creadits - back.return_money
where tmp.card_id = back.card_id;
insert into member
select * from tmp;
表資料匯出sql語句
go object storedprocedure dbo outputdata script date 08 04 2010 17 50 53 set ansi nulls on go set quoted identifier on go create procedure dbo outputd...
使用SQL語句操作表和表中的資料
一 分類 1 drop table 表名稱 drop 刪除表 刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增資料是不可能的,除非新增乙個表。drop語句將刪除表的結構被依賴的約束 constrain 觸發器 trigger 索引 index 依賴於該錶的儲存過程 函式將被保留,但其狀...
資料庫SQL語句實現
1 建立資料庫 create database if not exists cs2013 2 建立資料庫 create table if not exists comp id int not null primary key auto increment pid varchar 30 not nul...