如何在 SQL 的帮助下打印所需的输出

How to print the required output with the help of SQL

我在 AWS Athena 中有 tables 'users' 和 'user_transactions'。 table 有很多列,但我对 2 列感兴趣,即。 user nametxn_type.

txn_type 列有 3 个可能的值,即。 FT, NFT, PT.

对于每个用户,我需要以下面的格式打印每笔交易的计数。 输出应包含 4 列用户 ID 和每个 txns 的计数。

User Name, CountOfTxns of type FT, CountOfTxns of type NFT, CountOfTxns of type PT

此外,我需要加入用户和user_transactions table来打印类型为= 'Gold'

的用户的记录

所以要找到用户,它将是

select userId, userName from users, user_transactions t where u.userId = t=userId and u.type = 'Gold';

那么对于这些​​用户,我需要如上所述打印 4 列的输出。

因此,如果用户名 = 'ABC' 且 Id = 1 且 user_type = 'Gold' 有 3 次 FT,5 次 NFT 和 0 次 PT,

如果一个用户name = 'XYZ' and Id = 2 and user_type = 'Gold' 有9次FT,0次NFT和45次PT,输出应该是 输出应该是

User Name, CountOfTxns of type FT, CountOfTxns of type NFT, CountOfTxns of type PT

ABC, 3, 5, 0
XYZ, 9, 0, 45

如何编写可以在一行中打印所有计数的查询?

您可以像这样单独计算每个字段:

   SELECT u.name,
      SUM(CASE WHEN t.txn_type = 'FT' THEN 1 ELSE 0 END) as FT_count,
      SUM(CASE WHEN t.txn_type = 'NFT' THEN 1 ELSE 0 END) as NFT_count,
      SUM(CASE WHEN t.txn_type = 'PT' THEN 1 ELSE 0 END) as PT_count
    FROM users u, transactions t
    WHERE u.user_id = t.user_id and u.type = 'Gold'
    GROUP BY u.name;