at_risk = power_users[ (power_users['last_login'] < cutoff_date) & (power_users['plan_type'] == 'free') ] at_risk['churn_score'] = (at_risk['total_logins'] * 0.3) - (at_risk['pricing_page_views'] * 0.7) at_risk = at_risk.sort_values('churn_score', ascending=False) Write the result back to his beloved database at_risk[['user_id', 'churn_score']].to_sql('churn_predictions', postgres_conn, if_exists='replace')

From that day on, Mark Reed became a hybrid. He still optimized the hell out of a query. He still dreamed in B-tree indexes . But now, when he woke up, he wrote a Python script to wrap it all together. He stopped being just a gatekeeper of data. He became a storyteller, weaving SQL's rigid truth and Python's fluid possibility into something the C-suite could finally understand.

He delivered the report. The CEO was delighted. Lena stopped using so many acronyms.

The real test came on a Tuesday night. The CEO wanted a report by morning: "Show me every customer who has logged in more than ten times, viewed the pricing page, but hasn't upgraded in the last 90 days. And rank them by likelihood to leave."

df_users = pd.read_sql(query, postgres_conn)

Mark leaned back. He wasn't betraying SQL. He was augmenting it. SQL was his foundation, his truth. Python was his agility, his creativity.

He ran the script at 11:47 PM. At 11:49 PM, the churn_predictions table was populated. Two minutes. The monstrous SQL query that had taken 45 minutes to fail was now replaced by something that felt like magic.

เรื่องที่คุณอาจสนใจ