2026幎ã€ã¿ãªã¢ã®ããŒã¿ã¢ããªã¹ã颿¥è³ªå: SQLãPythonãåæã¹ãã«å®å šã¬ã€ã
ã€ã¿ãªã¢ã§2026幎ã«ããŒã¿ã¢ããªã¹ããšããŠæ¡çšãããããã®é¢æ¥å¯Ÿçã¬ã€ããSQLãPythonãpandasãããžãã¹åæã«é¢ããé »åºè³ªåãšæš¡ç¯è§£çã詳ãã解説ããŸãã

2026幎ã®ã€ã¿ãªã¢ã«ãããããŒã¿ã¢ããªã¹ã颿¥ã§ã¯ãSQLã®ç¿ç床ãPythonã«ããããŒã¿æäœããããŠããžãã¹èª²é¡ãåæç解決çã«å€æããèœåãéèŠãããŸãããã©ããããŒãããããŒãã£ãäžå¿ã«600以äžã®æ±äººãååšããPrometeiaãBending SpoonsãABBãªã©ã®äŒæ¥ã¯ãæè¡çãªæ·±ããšããžãã¹æèŠã®äž¡æ¹ãæ±ããŠããŸãã
ã€ã¿ãªã¢ã®æ¡çšæ åœè ã¯SQLãšPower BIã®ã¹ãã«ãéèŠããŸããç¹ã«ãã©ãã®ããã¯äŒæ¥ã§ã¯ãpandasã䜿ãããªãPythonã¹ãã«ãå·®å¥åèŠå ãšãªããŸãããšã³ããªãŒã¬ãã«ã®å¹Žåã¯â¬28,000ãâ¬39,000ãã·ãã¢ããŒã«ã§ã¯â¬80,000以äžã«éããŸãã
ãã¹ãŠã®ããŒã¿ã¢ããªã¹ã颿¥ã§åºé¡ãããSQL質å
SQLã¯ã€ã¿ãªã¢ã®ããŒã¿ã¢ããªã¹ã颿¥ã®åºç€ã§ããItalgasãPhilip Morrisãªã©ã®äŒæ¥ã®æ¡çšæ åœè ã¯ãJOINãéèšããŠã£ã³ããŠé¢æ°ã«ã€ããŠåè£è ããã¹ãããŸãããããã®è³ªåã¯ãåè£è ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ããæå³ã®ããæŽå¯ãæœåºã§ãããã©ãããè©äŸ¡ãããã®ã§ãã
質å1: INNER JOINãšLEFT JOINã®éããå®äŸã§èª¬æããŠãã ãã
æåŸ ãããåç: INNER JOINã¯äž¡æ¹ã®ããŒãã«ã«äžèŽãååšããè¡ã®ã¿ãè¿ããŸããLEFT JOINã¯å·ŠããŒãã«ã®ãã¹ãŠã®è¡ãšãå³ããŒãã«ã®äžèŽããè¡ãè¿ããäžèŽããªãå Žåã¯NULLå€ãå ¥ããŸãã
-- orders_analysis.sql
-- Find all customers and their orders (including customers with no orders)
SELECT
c.customer_id,
c.customer_name,
o.order_id,
o.order_total
FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id;
-- Result: Customers without orders appear with NULL order_id and order_total
-- INNER JOIN would exclude those customers entirely颿¥å®ã¯ãNULLå€ããã€åºçŸããããçè§£ããã©ã¡ãã®JOINã¿ã€ããéžæãããã®ããžãã¹ã³ã³ããã¹ãã説æã§ããåè£è ãæ±ããŠããŸãã
質å2: ããŒãã«å ã§2çªç®ã«é«ã絊äžãèŠã€ããã¯ãšãªãæžããŠãã ãã
ãã®è³ªåã¯ããµãã¯ãšãªãDISTINCTãçµæå¶éã®ç¥èããã¹ãããŸããè€æ°ã®æå¹ãªã¢ãããŒããååšããŸãã
-- salary_analysis.sql
-- Approach 1: Using subquery with MAX
SELECT MAX(salary) AS second_highest
FROM employees
WHERE salary < (SELECT MAX(salary) FROM employees);
-- Approach 2: Using DENSE_RANK window function
SELECT salary AS second_highest
FROM (
SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees
) ranked
WHERE rank = 2;ãŠã£ã³ããŠé¢æ°ã¢ãããŒãã¯åçãæ£ããåŠçããŸãã3人ã®åŸæ¥å¡ãæé«çµŠäžãå ±æããŠããå Žåã§ããDENSE_RANKã¯å®éã®2çªç®ã«é«ãå€ãè¿ããŸããROW_NUMBERã䜿çšãããšç°ãªãçµæã«ãªããããã¯SQLãŠã£ã³ããŠé¢æ°ã®çè§£ã瀺ããã®ã§ãã
質å3: éè€ã¬ã³ãŒããã©ã®ããã«ç¹å®ãåŠçããŸããïŒ
æåŸ ãããåç: GROUP BYãšHAVING COUNT(*) > 1ã䜿çšããŠéè€ãç¹å®ããŸããã¢ãããŒãã¯ããžãã¹ã«ãŒã«ã«äŸåããŸãïŒæåã®ã¬ã³ãŒããä¿æãããææ°ã®ãã®ãä¿æããããŸãã¯æ å ±ãããŒãžãããªã©ã
-- duplicate_detection.sql
-- Find duplicate email addresses
SELECT email, COUNT(*) AS occurrence_count
FROM users
GROUP BY email
HAVING COUNT(*) > 1;
-- Keep only the earliest record for each email
DELETE FROM users
WHERE id NOT IN (
SELECT MIN(id)
FROM users
GROUP BY email
);質å4: CTEãšã¯äœãããµãã¯ãšãªã®ä»£ããã«ãã€äœ¿çšãã¹ãã説æããŠãã ãã
Common Table ExpressionsïŒCTEïŒã¯ã¯ãšãªã®å¯èªæ§ãåäžãããååž°ã¯ãšãªãå¯èœã«ããŸããã€ã¿ãªã¢ã®é¢æ¥å®ã¯ãè€éãªãµãã¯ãšãªãCTEã«ãªãã¡ã¯ã¿ãªã³ã°ããããåè£è ã«æ±ããããšããããããŸãã
-- revenue_analysis.sql
-- CTE for monthly revenue calculation
WITH monthly_revenue AS (
SELECT
DATE_TRUNC('month', order_date) AS month,
SUM(order_total) AS revenue
FROM orders
WHERE order_date >= '2025-01-01'
GROUP BY DATE_TRUNC('month', order_date)
),
revenue_growth AS (
SELECT
month,
revenue,
LAG(revenue) OVER (ORDER BY month) AS prev_month_revenue,
revenue - LAG(revenue) OVER (ORDER BY month) AS growth
FROM monthly_revenue
)
SELECT * FROM revenue_growth WHERE growth > 0;CTEã¯åãã¯ãšãªå ã§åå©çšå¯èœã§ããããµãã¯ãšãªã¯ç¹°ãè¿ãå¿ èŠããããŸããããã¯ããŒã¿ã¢ããªã¹ãã®åœ¹å²ã§äžè¬çãªè€éãªåæã¯ãšãªã«ãããŠéèŠã§ãã
質å5: WHEREãšHAVINGã®éãã¯äœã§ããïŒ
æåŸ ãããåç: WHEREã¯éèšåã«è¡ããã£ã«ã¿ãªã³ã°ããHAVINGã¯éèšåŸã«ã°ã«ãŒãããã£ã«ã¿ãªã³ã°ããŸããWHEREã¯éèšé¢æ°ãåç §ã§ããŸããããHAVINGã¯åç §ã§ããŸãã
-- sales_filter.sql
-- WHERE filters individual rows
SELECT region, SUM(sales) AS total_sales
FROM transactions
WHERE transaction_date >= '2026-01-01' -- Filter rows first
GROUP BY region
HAVING SUM(sales) > 100000; -- Then filter aggregated groupsData Analyticsã®é¢æ¥å¯Ÿçã¯ã§ããŠããŸããïŒ
ã€ã³ã¿ã©ã¯ãã£ããªã·ãã¥ã¬ãŒã¿ãŒãflashcardsãæè¡ãã¹ãã§ç·Žç¿ããŸãããã
ããŒã¿ã¢ããªã¹ãè·ã®ããã®Pythonãšpandas質å
ãã©ãã®ããã¯äŒæ¥ãç¹ã«Bending SpoonsãAmazon Italyã§ã¯ãPythonã®ç¿ç床ãæåŸ ãããŸãããããã®è³ªåã¯ãpandasã«ããããŒã¿æäœã¹ãã«ãšåºæ¬çãªå¯èŠåèœåãè©äŸ¡ããŸãã
質å6: pandasã®DataFrameã§æ¬ æå€ãã©ã®ããã«åŠçããŸããïŒ
æåŸ ãããåç: ã¢ãããŒãã¯ããŒã¿åãšããžãã¹ã³ã³ããã¹ãã«äŸåããŸãããªãã·ã§ã³ã«ã¯ãè¡ã®åé€ãå¹³å/äžå€®å€/æé »å€ã§ã®è£å®ãæç³»åããŒã¿ã®åæ¹è£å®ããŸãã¯è£éã®äœ¿çšããããŸãã
# missing_values.py
import pandas as pd
import numpy as np
df = pd.DataFrame({
'date': pd.date_range('2026-01-01', periods=5),
'sales': [100, np.nan, 150, np.nan, 200],
'category': ['A', 'B', np.nan, 'A', 'B']
})
# Check missing values per column
print(df.isnull().sum())
# Fill numeric with median (robust to outliers)
df['sales'] = df['sales'].fillna(df['sales'].median())
# Fill categorical with mode
df['category'] = df['category'].fillna(df['category'].mode()[0])
# For time series: forward fill
df['sales_ffill'] = df['sales'].ffill()颿¥å®ã¯ãè¡ãç¡æ¡ä»¶ã«åé€ãããšæ å ±ã倱ãããããšããããŠè£å®æŠç¥ãåæç®çãšäžèŽããå¿ èŠãããããšãåè£è ãçè§£ããŠããããè©äŸ¡ããŸãã
質å7: pandasã®mergeãjoinãconcatã®éãã説æããŠãã ãã
æåŸ
ãããåç: merge()ã¯ã«ã©ã ãŸãã¯ã€ã³ããã¯ã¹ã§DataFrameãçµåããŸãïŒSQLã¹ã¿ã€ã«ã®JOINïŒãjoin()ã¯ã€ã³ããã¯ã¹ããŒã¹ã®çµåã®ããã®äŸ¿å©ãªã¡ãœããã§ããconcat()ã¯ãããã³ã°ãªãã§DataFrameãåçŽãŸãã¯æ°Žå¹³ã«ã¹ã¿ãã¯ããŸãã
# dataframe_combining.py
import pandas as pd
orders = pd.DataFrame({'order_id': [1, 2], 'customer_id': [101, 102]})
customers = pd.DataFrame({'customer_id': [101, 103], 'name': ['Alice', 'Bob']})
# merge: SQL-style join on column
merged = pd.merge(orders, customers, on='customer_id', how='left')
# concat: stack DataFrames
df1 = pd.DataFrame({'A': [1, 2]})
df2 = pd.DataFrame({'A': [3, 4]})
stacked = pd.concat([df1, df2], ignore_index=True)質å8: è€æ°ã®éèšã䌎ãã°ã«ãŒããã€æäœãã©ã®ããã«å®è¡ããŸããïŒ
# groupby_aggregation.py
import pandas as pd
df = pd.DataFrame({
'region': ['North', 'North', 'South', 'South'],
'product': ['A', 'B', 'A', 'B'],
'sales': [100, 150, 200, 50],
'quantity': [10, 15, 20, 5]
})
# Multiple aggregations with named columns
result = df.groupby('region').agg(
total_sales=('sales', 'sum'),
avg_sales=('sales', 'mean'),
total_quantity=('quantity', 'sum'),
transaction_count=('sales', 'count')
).reset_index()ãã®æ§æïŒååä»ãéèšïŒã¯pandas 1.0以éã§æšæºãšãªããpandas 3.0ã§ãåŒãç¶ã䜿çšãããŠããŸãã颿¥å®ã¯ãå€ãèŸæžããŒã¹ã®ã¢ãããŒãã§ã¯ãªãããã®æ§æã䜿çšããããšãæåŸ ããŠããŸãã
質å9: ææ¬¡æé·çãèšç®ããã³ãŒããæžããŠãã ãã
# mom_growth.py
import pandas as pd
df = pd.DataFrame({
'month': pd.date_range('2026-01-01', periods=6, freq='MS'),
'revenue': [10000, 12000, 11500, 14000, 15500, 16000]
})
# Calculate percentage change
df['mom_growth'] = df['revenue'].pct_change() * 100
# Alternative: manual calculation for clarity
df['prev_revenue'] = df['revenue'].shift(1)
df['growth_manual'] = ((df['revenue'] - df['prev_revenue']) / df['prev_revenue']) * 100質å10: pandasã§ããŒã¿ãããããããæ¹æ³ã¯ïŒ
# pivot_example.py
import pandas as pd
df = pd.DataFrame({
'date': ['2026-01', '2026-01', '2026-02', '2026-02'],
'region': ['North', 'South', 'North', 'South'],
'sales': [100, 150, 120, 180]
})
# Pivot: rows=date, columns=region, values=sales
pivot_table = df.pivot(index='date', columns='region', values='sales')
# pivot_table for aggregation when duplicates exist
agg_pivot = pd.pivot_table(df, values='sales', index='date',
columns='region', aggfunc='sum')ããžãã¹åæãšåé¡è§£æ±ºã«é¢ãã質å
ã€ã¿ãªã¢ã®äŒæ¥ãç¹ã«éèïŒPrometeiaïŒãè£œé æ¥ïŒABBïŒã§ã¯ãçŽç²ãªã³ãŒãã£ã³ã°ãè¶ ããåæçæèããã¹ãããŸãããããã®è³ªåã¯ãåè£è ãåé¡ãã©ã®ããã«ãã¬ãŒãã³ã°ããçºèŠãäŒããããè©äŸ¡ããŸãã
質å11: ããŒã±ãã£ã³ã°ãã£ã³ããŒã³ã®æåãã©ã®ããã«æž¬å®ããŸããïŒ
æåŸ ãããåç: ãã£ã³ããŒã³éå§åã«KPIãå®çŸ©ããŸããäžè¬çãªææšã«ã¯ãã³ã³ããŒãžã§ã³çã顧客ç²åŸã³ã¹ãïŒCPAïŒãåºåè²»çšå¯Ÿå¹æïŒROASïŒãé¡§å®¢çæ¶¯äŸ¡å€ïŒCLVïŒãå«ãŸããŸããã³ã³ãããŒã«ã°ã«ãŒããŸãã¯éå»ã®ããŒã¹ã©ã€ã³ãšæ¯èŒããŸãã
匷ãåçã«å«ãŸããèŠçŽ ïŒ
- ãã£ã³ããŒã³éå§åã®ããŒã¹ã©ã€ã³ææš
- ã¢ããªãã¥ãŒã·ã§ã³ã¢ãã«ã®éžæïŒãã¡ãŒã¹ãã¿ãããã©ã¹ãã¿ããããã«ãã¿ããïŒ
- çµæã«å¯Ÿããçµ±èšçæææ§ãã¹ã
- ãã£ãã«ããªãŒãã£ãšã³ã¹ãå°åå¥ã®ã»ã°ã¡ã³ããŒã·ã§ã³
質å12: ãããã¯ããããŒãžã£ãŒã仿ã®å£²äžã15%æžå°ãããšå ±åããŸãããã©ã®ããã«èª¿æ»ããŸããïŒ
æåŸ ãããåç: åé¡ãäœç³»çã«åè§£ããŸãïŒ
- ããŒã¿ã®æ€èšŒ: ããŒã¿å質ã®åé¡ãæ¬ èœã¬ã³ãŒãããŸãã¯ã¬ããŒãã®é å»¶ããã§ãã¯
- ã»ã°ã¡ã³ãåæ: 補åãå°åã顧客ã»ã°ã¡ã³ãããã£ãã«å¥ã«åè§£
- 倿°ã®åé¢: ããªã¥ãŒã ãæžå°ããã®ããäŸ¡æ Œãå€ãã£ãã®ããããã¯ã¹ãã·ããããã®ãã倿
- å€éšèŠå : å£ç¯æ§ãç«¶åä»ç€Ÿã®è¡åãçµæžã€ãã³ãããã§ãã¯
- ä»ã®ææšãšã®çžé¢: ãŠã§ããµã€ããã©ãã£ãã¯ãã³ã³ããŒãžã§ã³çãã«ãŒãæŸæ£ç
質å13: A/Bãã¹ãã«ã€ããŠèª¬æãã䜿çšãã¹ãã§ãªãå Žåã«ã€ããŠè¿°ã¹ãŠãã ãã
æåŸ ãããåç: A/Bãã¹ãã¯2ã€ã®ããªã¢ã³ãïŒã³ã³ãããŒã«å¯ŸããªãŒãã¡ã³ãïŒãæ¯èŒããå æç圱é¿ã枬å®ããŸããã©ã³ãã å²ãåœãŠãååãªãµã³ãã«ãµã€ãºãåäžã®é¢å¿ææšãå¿ èŠã§ãã
A/Bãã¹ãã䜿çšãã¹ãã§ãªãå ŽåïŒ
- ãµã³ãã«ãµã€ãºãçµ±èšçæ€åºåã«äžåå
- 倿Žããã¹ãŠã®ãŠãŒã¶ãŒã«åœ±é¿ããïŒã€ã³ãã©ã¹ãã©ã¯ãã£ãäŸ¡æ Œèšå®ïŒ
- ãããã¯ãŒã¯å¹æãååšããïŒãŠãŒã¶ãŒãäºãã«åœ±é¿ãäžãããœãŒã·ã£ã«æ©èœïŒ
- æçãªå€æŽãå·®ãæ§ããããšã«å«ççæžå¿µããã
質å14: çµ±èšçæææ§ãéæè¡è ã«ã©ã®ããã«èª¬æããŸããïŒ
æåŸ ãããåç: çµ±èšçæææ§ãšã¯ã芳å¯ãããå·®ç°ãã©ã³ãã ãªå¶ç¶ã«ãã£ãŠçºçããå¯èœæ§ãäœãããšãæå³ããŸããpå€ã0.05æªæºã§ããã°ãçµæãã©ã³ãã ã«çºçãã確çã5%æªæºã§ããããšã瀺ããŸãã
äŸã話ïŒã³ã€ã³ã10åæããŠ7å衚ãåºãã®ã¯å¶ç¶ãããããŸããããããã100åæããŠ95å衚ãåºãã®ã¯çµ±èšçã«ææã§ãããªããªããå¶ç¶ã ãã§ã¯èª¬æã§ããªãããã§ãã
質å15: çžé¢ãšå æã®éãã¯äœã§ããïŒ
æåŸ ãããåç: çžé¢ã¯2ã€ã®å€æ°ãã©ã®ããã«äžç·ã«åãããæž¬å®ããŸããå æã¯ãäžæ¹ã®å€æ°ã仿¹ã«çŽæ¥åœ±é¿ãäžããããšãæå³ããŸããã¢ã€ã¹ã¯ãªãŒã ã®å£²äžãšæººæ»äºæ ã¯çžé¢ããŸãïŒäž¡æ¹ãšãå€ã«å¢å ïŒããã¢ã€ã¹ã¯ãªãŒã ãæººæ»ã®åå ã§ã¯ãããŸããã
å æé¢ä¿ã確ç«ããã«ã¯ïŒ
- æéçå è¡æ§ïŒåå ãçµæã«å è¡ããïŒ
- çžé¢
- äº€çµ¡å€æ°ã®æé€ïŒã©ã³ãã 忝èŒè©ŠéšïŒ
æè¡ã¹ãã«è©äŸ¡ã®è³ªå
ãããã®è³ªåã¯ãã€ã¿ãªã¢åžå Žã§æåŸ ãããç¹å®ã®ããŒã«ã®ç¿ç床ããã¹ãããŸãã
質å16: ãšã³ã¿ãŒãã©ã€ãºåæã«ãããPower BIãšTableauã®æ¯èŒ
ã€ã¿ãªã¢ã®äŒæ¥ãç¹ã«éè¡ãå ¬å ±äºæ¥ã§ã¯ãMicrosoftãšã³ã·ã¹ãã ãšã®çµ±åã«ããPower BIãå€ã䜿çšãããŠããŸããäž»ãªéãïŒ
| åŽé¢ | Power BI | Tableau |
|---|---|---|
| ã³ã¹ã | äœãïŒOffice 365ã«å«ãŸããïŒ | ã©ã€ã»ã³ã¹æãé«ã |
| åŠç¿æ²ç· | ExcelãŠãŒã¶ãŒã«ã¯ç°¡å | ããæ¥ã ã匷å |
| ããŒã¿æºå | Power Queryãçµã¿èŸŒã¿ | Prepã«å¥ããŒã«ãå¿ èŠ |
| å¯èŠå | è¯å¥œãæ¹åäž | æé«ã¯ã©ã¹ |
| äŒæ¥å°å ¥ | ã€ã¿ãªã¢ã§ããé«ã | å€åœç±äŒæ¥ã§äžè¬ç |
質å17: DAXãšã¯äœããã¡ãžã£ãŒã®äŸã瀺ããŠãã ãã
æåŸ ãããåç: DAXïŒData Analysis ExpressionsïŒã¯Power BIã®èšç®çšæ°åŒèšèªã§ããã¡ãžã£ãŒã¯ãã£ã«ã¿ãŒã³ã³ããã¹ãã«åºã¥ããŠåçã«å€ãèšç®ããŸãã
// Year-over-Year Growth measure in DAX
YoY Growth % =
VAR CurrentYearSales = SUM(Sales[Amount])
VAR PreviousYearSales = CALCULATE(
SUM(Sales[Amount]),
DATEADD(Calendar[Date], -1, YEAR)
)
RETURN
DIVIDE(CurrentYearSales - PreviousYearSales, PreviousYearSales, 0)質å18: ETLãšãã®åæã«ãããéèŠæ§ã説æããŠãã ãã
æåŸ ãããåç: ETLã¯ExtractïŒæœåºïŒãTransformïŒå€æïŒãLoadïŒããŒãïŒã®ç¥ã§ããããŒã¿ã¯ãœãŒã¹ã·ã¹ãã ïŒERPãCRMããŠã§ããã°ïŒãã倿ïŒã¯ãªãŒãã³ã°ãéèšãçµåïŒãçµãŠãåæçšã®ããŒã¿ãŠã§ã¢ããŠã¹ã«ããŒããããŸãã
çŸä»£çãªä»£æ¿ææ®µã«ã¯ãELTïŒæåã«çããŒã¿ãããŒããããŠã§ã¢ããŠã¹ã§å€æïŒãã倿ããžãã¯ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããåé¢ããdbtãªã©ã®ããŒã«ããããŸãã
質å19: OLTPãšOLAPã·ã¹ãã ã®éãã¯äœã§ããïŒ
| åŽé¢ | OLTP | OLAP |
|---|---|---|
| ç®ç | ãã©ã³ã¶ã¯ã·ã§ã³åŠç | åæã¯ãšãª |
| ããŒã¿ã¢ãã« | æ£èŠåïŒç¬¬3æ£èŠåœ¢ïŒ | 鿣èŠåïŒã¹ã¿ãŒ/ã¹ããŒãã¬ãŒã¯ïŒ |
| ã¯ãšãªã¿ã€ã | ã·ã³ãã«ãé »ç¹ | è€éãéèš |
| ã¯ãšãªãããã®ããŒã¿é | å°é | 倧é |
| äŸ | åæ³šå ¥åãéè¡ååŒ | ããŒã¿ãŠã§ã¢ããŠã¹ãBIã¬ããŒã |
質å20: é ãSQLã¯ãšãªãã©ã®ããã«æé©åããŸããïŒ
æåŸ ãããåç: äœç³»çãªã¢ãããŒãã«åŸããŸãïŒ
- å®è¡èšç»ã®åæ: ãã«ããŒãã«ã¹ãã£ã³ãæ¬ èœã€ã³ããã¯ã¹ãç¹å®
- é©åãªã€ã³ããã¯ã¹ã®è¿œå : WHEREãJOINãORDER BYã®ã«ã©ã ã«å¯ŸããŠ
- éå¹çãªãã¿ãŒã³ã®æžãæã: çžé¢ãµãã¯ãšãªãJOINã«çœ®ãæã
- æ©æã®ããŒã¿å¶é: 倧ããªããŒãã«ãçµåããåã«ãã£ã«ã¿ãªã³ã°
- ã¯ãšãªãã³ãã¯æ§ããã«äœ¿çš: ãªããã£ãã€ã¶ãäžé©åãªéžæãããå Žåã®ã¿
-- query_optimization.sql
-- Before: correlated subquery (slow)
SELECT * FROM orders o
WHERE o.total > (SELECT AVG(total) FROM orders WHERE customer_id = o.customer_id);
-- After: window function (faster)
SELECT * FROM (
SELECT *, AVG(total) OVER (PARTITION BY customer_id) AS avg_total
FROM orders
) sub
WHERE total > avg_total;Data Analyticsã®é¢æ¥å¯Ÿçã¯ã§ããŠããŸããïŒ
ã€ã³ã¿ã©ã¯ãã£ããªã·ãã¥ã¬ãŒã¿ãŒãflashcardsãæè¡ãã¹ãã§ç·Žç¿ããŸãããã
è¡å颿¥ãšã·ããªãªããŒã¹ã®è³ªå
ã€ã¿ãªã¢ã®é¢æ¥å®ã¯ãæè¡åãšãšãã«æåçé©åæ§ãšã³ãã¥ãã±ãŒã·ã§ã³èœåãè©äŸ¡ããŸãã
質å21: åæçµæãã¹ããŒã¯ãã«ããŒã®æåŸ ãšççŸããçµéšã説æããŠãã ãã
匷ãåçã®æ§æ:
- ç¶æ³ïŒã¹ããŒã¯ãã«ããŒãä¿¡ããŠããããš
- åæïŒããŒã¿ãå®éã«ç€ºããããš
- ã³ãã¥ãã±ãŒã·ã§ã³ïŒçºèŠãã©ã®ããã«å€äº€çã«äŒããã
- çµæïŒã©ã®ãããªæ±ºå®ãäžããããã®åœ±é¿ã¯äœã ã£ãã
颿¥å®ãæ±ããäž»èŠãªè¡åïŒç¥çèª å®ããå€äº€çãªã³ãã¥ãã±ãŒã·ã§ã³ãããŒã¿ã«åºã¥ãçµè«ãžã®ç¢ºä¿¡
質å22: è€æ°ã®ç·æ¥ããŒã¿ãªã¯ãšã¹ããã©ã®ããã«åªå é äœä»ãããŸããïŒ
æåŸ ãããåç:
- åãªã¯ãšã¹ãã®ããžãã¹ã€ã³ãã¯ããè©äŸ¡
- ç· ãåããæç¢ºã«ããå¯èœãªå Žåã¯äº€æž
- ã¯ã€ãã¯ãŠã£ã³ãšæ·±ãåæãèå¥
- çŸå®çãªã¿ã€ã ã©ã€ã³ãç©æ¥µçã«äŒãã
- ãªãœãŒã¹å¶çŽããããžã¡ã³ãã«ãšã¹ã«ã¬ãŒã·ã§ã³
質å23: åæã§ããŒã¿å質ãã©ã®ããã«ç¢ºä¿ããŸããïŒ
æåŸ ãããåç:
- åæåã«ãœãŒã¹ããŒã¿ãæ€èšŒïŒNULLãã§ãã¯ãç¯å²ãã§ãã¯ãåç §æŽåæ§ïŒ
- ä»®å®ãæç€ºçã«ææžå
- è€æ°ã®ããŒã¿ãœãŒã¹ãçžäºåç §
- èªååãããããŒã¿å質ãã§ãã¯ãå®è£
- å€ãå€ãé€å€ããåã«æåã§ã¬ãã¥ãŒ
質å24: æ°ããããŒã«ãæè¡ãåŠã¶ã¢ãããŒãã説æããŠãã ãã
æåŸ ãããåç:
- å ¬åŒããã¥ã¡ã³ããšãã¥ãŒããªã¢ã«ããéå§
- æŠå¿µãé©çšããããã®å°ããªãããžã§ã¯ããæ§ç¯
- ã³ãã¥ããã£ã«åå ïŒRedditãStack OverflowãããŒã«ã«ããŒãã¢ããïŒ
- çè§£ãåºããããã«ä»è ã«æãã
ã€ã¿ãªã¢åžå Žã«ç¹åãã質å
質å25: ã€ã¿ãªã¢ã§ããŒã¿åæã«åœ±é¿ããèŠå¶ã¯äœã§ããïŒ
æåŸ ãããåç: GDPRãäž»èŠãªèŠå¶ã§ããäž»ãªèŠä»¶ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- å人ããŒã¿åŠçã«å¯Ÿããæç€ºçãªåæ
- æ¶å»æš©ïŒããŒã¿åé€ãªã¯ãšã¹ãïŒ
- ããŒã¿æå°åïŒå¿ èŠãªããŒã¿ã®ã¿ãåéïŒ
- é«ãªã¹ã¯åŠçã«å¯Ÿãããã©ã€ãã·ãŒåœ±é¿è©äŸ¡
ã»ã¯ã¿ãŒåºæïŒã€ã¿ãªã¢ã®éè¡ïŒã€ã¿ãªã¢éè¡èŠå¶ïŒãå»çïŒã€ã¿ãªã¢çHIPAAçžåœæ³ïŒãå ¬å ±ã»ã¯ã¿ãŒïŒCADããã³AGIDã¬ã€ãã©ã€ã³ïŒ
質å26: åæããŒã¿ã»ããã§PIIãã©ã®ããã«æ±ããŸããïŒ
æåŸ ãããåç:
- ä»®ååïŒèå¥åãããŒã¯ã³ã«çœ®ãæã
- éèšïŒå人ã¬ãã«ã§ã¯ãªãã°ã«ãŒãã¬ãã«ã§ã¬ããŒã
- ããŒã¿ãã¹ãã³ã°ïŒæ©å¯éšåãé ãïŒemail: a***@gmail.comïŒ
- ã¢ã¯ã»ã¹å¶åŸ¡ïŒæ©å¯ããŒã¿ã«å¯ŸããããŒã«ããŒã¹ã®æš©é
- ä¿æããªã·ãŒïŒäžèŠã«ãªã£ãããŒã¿ãåé€
質å27: ã¯ã©ãŠãããŒã¿ãã©ãããã©ãŒã ã®çµéšã¯ãããŸããïŒ
ã€ã¿ãªã¢ã®äŒæ¥ã¯ãŸããŸãã¯ã©ãŠããã©ãããã©ãŒã ã䜿çšããŠããŸããåžå Žã§äžè¬çãªãã®ïŒ
- Google BigQueryïŒGoogle CloudïŒ
- Amazon RedshiftïŒAWSïŒ
- Azure SynapseïŒMicrosoftãšã³ã·ã¹ãã çµ±åïŒ
- SnowflakeïŒã¯ã©ãŠãéäŸåïŒ
質å28: åæçµæãçµå¶é£ã«ã©ã®ããã«äŒããŸããïŒ
æåŸ ãããåç:
- æ¹æ³è«ã§ã¯ãªããæšå¥šäºé ããªãŒãã«
- çµå¶é£ãæ°ç§ã§è§£éã§ããå¯èŠåã䜿çš
- ããžãã¹ã€ã³ãã¯ããå®éåïŒåçãã³ã¹ãããªã¹ã¯ïŒ
- 質åãäºæž¬ããããã¯ã¢ããã¹ã©ã€ããæºå
- å°éçšèªãé¿ããæè¡çšèªã翻蚳
質å29: Eã³ããŒã¹ããžãã¹ã§ã©ã®ãããªææšã远跡ããŸããïŒ
æåŸ ãããåç:
- ç²åŸ: ãã©ãã£ãã¯ãœãŒã¹ã顧客ç²åŸã³ã¹ã
- è¡å: çŽåž°çãã»ãã·ã§ã³ãããã®ããŒãžæ°ããµã€ãæ»åšæé
- ã³ã³ããŒãžã§ã³: ãã¡ãã«æ®µéå¥ã³ã³ããŒãžã§ã³çãã«ãŒãæŸæ£ç
- ãªãã³ã·ã§ã³: ãªããŒãè³Œå ¥çãé¡§å®¢çæ¶¯äŸ¡å€
- åç: 平忳šæé¡ã蚪åè ãããã®åç
質å30: ããŒã¿åæã®ãã¬ã³ããã©ã®ããã«ææ¡ããŠããŸããïŒ
æåŸ ãããåç:
- æ¥çåºçç©ããã©ããŒïŒTowards Data ScienceãAnalytics Vidhya
- Kaggleã³ã³ããã£ã·ã§ã³ã«åå
- ã«ã³ãã¡ã¬ã³ã¹ã«åå ïŒPyDataããã©ããããŒãã®ããŒã«ã«ããŒã¿ãµã€ãšã³ã¹ããŒãã¢ãã
- æ°ããããŒã«ãªãªãŒã¹ã®ããã¥ã¡ã³ããèªã
- å人ãããžã§ã¯ãã§æ°æè¡ãå®éš
2026幎ã€ã¿ãªã¢ã®ããŒã¿ã¢ããªã¹ã颿¥æºåæŠç¥
- SQLãã¹ã¿ãªãŒ: LeetCode Databaseã®åé¡ãšStrataScrachã§ç·Žç¿ãã€ã¿ãªã¢ã®äŒæ¥ã¯JOINããŠã£ã³ããŠé¢æ°ãCTEãéç¹çã«ãã¹ãããŸã
- Pythonç¿ç床: Kaggleã§pandasã®æŒç¿ãå®äºãããŒã¿ã¯ãªãŒãã³ã°ãšéèšã«çŠç¹ãåœãŠãŸã
- ããŒã«ã®ç¿ç: Power BIã¹ãã«ã¯ã€ã¿ãªã¢ã®äŒæ¥ã§é«ãè©äŸ¡ãããŠããŸããTableauã¯å€åœç±äŒæ¥ã§äžè¬çã§ã
- ããžãã¹ã³ã³ããã¹ã: ããžãã¹äžã®è³ªåãåæçã¢ãããŒãã«å€æããéå»ã®ä»äºã®äŸãæºå
- ã€ã¿ãªã¢èª: å€ãã®ããã¯äŒæ¥ã¯è±èªã§éå¶ãããŠããŸãããã€ã¿ãªã¢èªã®æµæ¢ãã¯äŒçµ±çãªç£æ¥ïŒéè¡ãè£œé æ¥ãå ¬å ±äºæ¥ïŒã§ã®æ©äŒãåäžãããŸã
ä»ããç·Žç¿ãå§ããŸãããïŒ
颿¥ã·ãã¥ã¬ãŒã¿ãŒãšæè¡ãã¹ãã§ç¥èããã¹ãããŸãããã
Data Analytics ã®ãã°ãèŠã€ããããŸãã
å®éã®ã³ãŒããé ãããã°ã1æ¥1åãã¢ã«ãŠã³ããªãã§è©ŠããŸãã

å·ç
Anthony Fillion-MailletSharpSkill 嵿¥è
10 幎以äžãã«ã¹ã¿ãã¯éçºã«æºãã£ãŠããŸããSharpSkill ãéå¶ããããã§å ¬éãããå 容ã«è²¬ä»»ãè² ã£ãŠããŸãã
2026幎8æ26æ¥ æŽæ°
ã¿ã°
å ±æ
é¢é£èšäº

ããŒã¿ã¢ããªã¹ã颿¥å¯Ÿç2026幎çïŒSQLã»Pythonã»åæã¹ãã«å®å šã¬ã€ã
2026幎ã®ããŒã¿ã¢ããªã¹ã颿¥ã§é »åºããSQLãPythonãçµ±èšåæã®è³ªåãšæš¡ç¯è§£çã培åºè§£èª¬ãå®è·µçãªã³ãŒãäŸãšè§£çã®ãã€ã³ãã§å å®ç²åŸãç®æãã

2026幎ç ããŒã¿ã¢ããªãã£ã¯ã¹é¢æ¥è³ªåããã25
2026幎ã®ããŒã¿ã¢ããªãã£ã¯ã¹é¢æ¥å¯Ÿçã¬ã€ããSQLãPythonãPower BIãçµ±èšãè¡å颿¥ã®é »åºè³ªå25åãã³ãŒãäŸä»ãã§åŸ¹åºè§£èª¬ããŸãã

Pandas 3.0ïŒ2026幎çïŒïŒæ°APIãç Žå£ç倿Žã颿¥å¯Ÿçã®å®å šã¬ã€ã
Pandas 3.0ã®Copy-on-WriteãPyArrowæååããã¯ãšã³ããpd.col()åŒãã«ããŒãªã©ã®æ°æ©èœã培åºè§£èª¬ãããŒã¿åæãšã³ãžãã¢ã®é¢æ¥ã§åããããã€ã³ããç¶²çŸ ã