首页 > 试题广场 >

数据库中现有一张信用卡交易流水表T,共有三个字段:用户ID(

[问答题]
数据库中现有一张信用卡交易流水表T,共有三个字段:用户ID(usr_id)、交易城市(trx_cty)、交易金额(trx_amt)
    +---------+------------+------------+
    | usr_id  | trx_cty    | trx_amt    |
    +---------+------------+------------+
    | 100001  | beijing    | 120.00     |
    | 100001  | shanghai   | 1500.00    |
    | 100002  | shanghai   | 122.00     |
    | 100001  | shenzhen   | 30.00      |
    | 100001  | guangzhou  | 1600.50    |
    | 100001  | shenzhen   | 1500.00    |
    | 100003  | shanghai   | 7.80       |
    | 100003  | shenzhen   | 550.20     |
    | 100001  | beijing    | 8923.70    |
    +---------+------------+------------+
    现在需要利用sql语句统计:
    (1)统计每个用户最高消费额
    (2)统计每个用户最高消费额所对应的消费城市
    (3)由于建模的需要,现在需要对数据进行预处理。对每个用户ID,需要统计每个用户分别是否在北京、上海、广州、深圳消费过,有过该城市消费记录为1,否则为0。输出表如下:
    +---------+---------+---------+----------+----------+
    | usr_id  | beijing | shanghai| guangzhou| shenzhen |
    +---------+---------+---------+----------+----------+
    | 100001  |   1     |    1    |      1   |      1   |
    | 100002  |   0     |    1    |      0   |      0   |
    | 100003  |   0     |    1    |      0   |      1   |
    +---------+---------+---------+----------+----------+

(3)select  userid from T 
max(case trx_amt='beijing' then 1 else 0 end ) as beijing
max(case trx_amt='shanghai' then 1 else 0 end ) as shanghai
max(case trx_amt='guangzhou' then 1 else 0 end) as guangzhou
max(case trx_amt='shenzhen ' then 1 else 0 end) as shenzhen 
from T groud by userid


发表于 2020-05-06 18:43:43 回复(0)
(1)select max(trx_amt) 
        from T
        group by usr_id;
(2)select trx_cty
        from (select max(trx_amt) from T group by usr_id,trx_cty)
(3)
发表于 2019-10-31 16:50:11 回复(0)