【问题标题】:Querying Transaction_Table to get Count查询 Transaction_Table 获取 Count
【发布时间】:2019-09-26 02:30:05
【问题描述】:

我是 SQL 新手,并试图获得以下问题的答案。我已经建立了以下我知道不正确的答案。你能帮我解决我的疑问吗?

有一个数据库表Transaction_Table (与所有用户的交易历史, 每行是一个事务)具有四个字段: 用户身份;时间戳;交易ID; transaction_amount_in_usd

根据交易金额对 19 年 7 月有交易的客户进行排名

SELECT user_id, sum(transaction) from Transaction_Table
Order by sum(transaction) desc
Where date(timestamp) = 07-2019;

对于每个user_id,只保留一条交易金额最高的记录

Select user_id, transaction amount
from transaction_table
Order by transaction desc
Group by user_id

报告 19 年 7 月的新客户数量

Select count(user_id), 
FROM TRANSACTION_TABLE
(Select * from transaction_table
Where date(timetamp) >= “07-2019”)
ORDER BY COUNT(USER_ID)

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    根据交易金额对 19 年 7 月有交易的客户进行排名 假设您的日期是日期数据类型

    Select user_id, sum(transaction) 
    From Transaction_Table
    Where timestamp = '07-2019'
    Order by sum(transaction) desc;
    

    对于每个user_id,只保留一条交易金额最高的记录

    这里不需要Order by,因为您只想返回一个值,即最高交易金额

    Select user_id, max(transaction_amount)
    from transaction_table
    Group by user_id
    

    报告 19 年 7 月的新客户数量(假设没有单独的列来了解用户是否为新用户,并将所有用户 >= 07-2019 视为表中的新用户)

    Select count(user_id)
    From transaction_table
    Where timestamp >= '07-2019'
    

    【讨论】:

    • 您好,Harshal,感谢您的回复。对于最后一个,它的所有新客户。这意味着他们不应该在 7 月 19 日之前进行交易。 2019 年 7 月及以后的用户也可能在 2019 年 7 月之前进行交易,因此此解决方案不起作用
    猜你喜欢
    • 1970-01-01
    • 2015-04-23
    • 2014-04-28
    • 2020-03-11
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多