鱼C论坛

 找回密码
 立即注册
查看: 1801|回复: 4

SQL题

[复制链接]
发表于 2022-3-8 15:05:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
7、登录表playerlogin如下:
Vopenid        ddatetime         
小a           2017060506         
小a           2017060611         
小b           2017060606         
小b           2017060506         
小c           2017060606         
小c           2017060506         

金币流水表moneyflow如下:
Vopenid        ddatetime          money    AddOrReduce(充值即增加,消费即减少)
小a           2017060506         500         增加
小a           2017060608         1000        减少
小a           2017060612         1000        减少
小b           2017060606         100         减少
小d           2017060106         1050        减少


1)用sql写出6月6日,有过登录的人数,有过充值的人数,及充值金额(一条sql写出查询三个数值)
2)求出游戏中所有的玩家数


建表sql:
-- 登入表
create or replace temporary view playerlogin (Vopenid, ddatetime) as
values ("小a", "2017060506"),
       ("小a", "2017060611"),
       ("小b", "2017060606"),
       ("小b", "2017060506"),
       ("小c", "2017060606"),
       ("小c", "2017060506");

-- 金币流水表(充值即增加,消费即减少)
create or replace temporary view moneyflow (Vopenid,ddatetime,money,AddOrReduce) as
values ("小a","2017060506",500,"增加"),
       ("小a","2017060608",1000,"减少"),
       ("小a","2017060612",1000,"减少"),
       ("小b","2017060606",100,"减少"),
       ("小d","2017060106",1050,"减少");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-8 15:54:05 | 显示全部楼层
用sql写出6月6日,有过登录的人数有过充值的人数,及充值金额(一条sql写出查询三个数值)

这三个条件同时满足吗??
select vopenid,addorreduce,money from moneyflow where ddatetime="20170606";

要是彼此独立的,我不认为用一条语句就能写出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-8 16:07:39 | 显示全部楼层
2)求出游戏中所有的玩家数


select vopenid from moneyflow UNION  select vopenid from playerlogin;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-8 16:14:21 | 显示全部楼层
本帖最后由 wp231957 于 2022-3-8 16:16 编辑

嗯,彼此独立,还真能用一条语句写出来
不知道是不是符合要求:
select vopenid,money,addorreduce from moneyflow where ddatetime="20170606" UNION  select vopenid,0 ,0 from playerlogin where ddatetime="20170606";


数据库.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-8 22:49:38 | 显示全部楼层
本帖最后由 512189654 于 2022-3-8 22:53 编辑
-- 1)用sql写出6月6日,有过登录的人数,有过充值的人数,及充值金额(一条sql写出查询三个数值)
with t1 as (
    select Vopenid as id1, ddatetime
    from playerlogin
    where substr(ddatetime, 5, 4) = "0606"),
     t2 as (
         select Vopenid as id2, ddatetime, money, AddOrReduce
         from moneyflow
         where substr(ddatetime, 5, 4) = "0606"
           and AddOrReduce = "增加")
select "0606"              as ddatetime,
       count(distinct id1) as `登入人数`,
       count(distinct id2) as `充值人数`,
       sum(money)          as total_money
from t1
         full outer join t2 on id1 = id2;

-- 2)求出游戏中所有的玩家数
select count(*)
from (select Vopenid
      from playerlogin
      union
      select Vopenid
      from moneyflow);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 14:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表