在一个select语句中使用min和max(未完成的输出?)

时间:2019-05-23 14:48:54

标签: python sql

作为工作的一部分,我试图从csv文件中提取最小值和最大值,但是当我运行代码时,将打印列名而不是实际的最大值,而最小值打印就很好了。 / p>

我曾尝试将其分成不同的选择语句,例如将min和max都分开,但这没有用。该语句可以打印表中的总数,平均年龄和最小余额。但是无法打印最大限额余额。我不能在一个陈述中结合最小和最大吗?看起来确实像是第二组括号,它可以很好地打印出来,在我的CSV中该列的最大值为1,000,000。

这是我要执行的表结构,列出了表的列名。

c.execute(                                                   
    '''CREATE TABLE Users (ID INTEGER, LIMIT_BAL INTEGER, SEX 
    INTEGER, EDUCATION INTEGER, MARRIAGE INTEGER,
    AGE INTEGER, PAY_0 INTEGER, PAY_2 INTEGER, PAY_3 INTEGER, PAY_4 INTEGER, PAY_5 INTEGER,
    PAY_6 INTEGER, BILL_AMT1 INTEGER, BILL_AMT2 INTEGER, BILL_AMT3 INTEGER, BILL_AMT4 INTEGER,
    BILL_AMT5 INTEGER,BILL_AMT6 INTEGER, PAY_AMT1 INTEGER, PAY_AMT2 INTEGER, PAY_AMT3 INTEGER,
    PAY_AMT4 INTEGER, PAY_AMT5 INTEGER, PAY_AMT6 INTEGER, default_payment_next_month INTEGER)
    ''')

# sixth query
c.execute(
    'SELECT COUNT(*), AVG(AGE), MIN(LIMIT_BAL), MAX(LIMIT_BAL) \
    default_payment_next_month FROM Users GROUP BY 
    default_payment_next_month = 0')
rows = c.fetchall()
print('6): \n', rows)

输出:

6): 
[(6319, 35.645830036398166, 10000, 'LIMIT_BAL'), (21752, 35.39196395733725, 10000, 1000000)]

1 个答案:

答案 0 :(得分:0)

我要尝试的查询是

选择COUNT(*),AVG(AGE),MIN(LIMIT_BAL),MAX(LIMIT_BAL)  来自用户     其中default_payment_next_month = 0     GROUP BY default_payment_next_month

我不确定MAX(LIMIT_BAL)\ default_payment_next_month语句在做什么。我假设您将MAX(LIMIT_BAL)除以default_payment_next_month。如果是这种情况,则该语句为MAX(LIMIT_BAL)/ default_payment_next_month,但这在group by中可能不起作用。