如何在 SQL 的帮助下打印所需的输出
How to print the required output with the help of SQL
我在 AWS Athena 中有 tables 'users' 和 'user_transactions'。 table 有很多列,但我对 2 列感兴趣,即。 user name
和 txn_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;
我在 AWS Athena 中有 tables 'users' 和 'user_transactions'。 table 有很多列,但我对 2 列感兴趣,即。 user name
和 txn_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;