SQL 查询:由另一列分组的列中最常见的值

问题描述 投票:0回答:1

假设我有一个数据库employee.db,创建如下:

# %% CREATE DATAFRAME
data = {'Name': ['John', 'Jane', 'Adam', 'Jane', 'Frank', 'Mary'],
        'Age': [35, 28, 42, 32, 35, 39],
        'Department': ['HR', 'IT', 'Finance', 'IT', 'Sales', 'IT']}
df = pd.DataFrame(data)

# %% CREATE A SQL DATABASE ENGINE
engine = create_engine('sqlite:///employee.db', echo=True)

# %% CONVERT THE DATA FRAME TO SQL
df.to_sql('employee', con=engine, if_exists='replace', index=False)

# %% CLOSE THE CONNECTION
engine.dispose()

我正在尝试读取数据库,使用

from sqlalchemy import create_engine, text
import pandas as pd

# %% CREATE A SQL DATABASE ENGINE
engine = create_engine('sqlite:///employee.db', echo=True)

# %% QUERY THE SQL TABLE
with engine.connect() as conn:
    # INSERT SQL QUERIES HERE

# %% CLOSE THE CONNECTION
engine.dispose()

我想计算每个部门最常见的名称。如果部门为“IT”,查询必须显示“Jane”。

python sql pandas sqlite
1个回答
0
投票

这些都是相当简单的查询。您应该检查

ORDER BY
聚合函数的文档。

  • 计算有多少个不重复的不同部门(预期输出:4 - ['HR', 'IT', 'Finance', 'Sales'])
SELECT COUNT(DISTINCT e.Department)
FROM employee e;
  • 最频繁的部门(预期输出:IT - 出现 3 次)
SELECT e.Department, COUNT(*) AS count
FROM employee e
GROUP BY
  e.Department
ORDER BY
  count DESC
LIMIT 1;
  • 最年长的员工(预期产出:Adam - 42)
SELECT e.Name
FROM employee e
ORDER BY
  e.Age DESC;

帮自己一个忙,不要将

Age
存储在数据库中,它会一直变化。相反,存储出生日期并计算年龄。

© www.soinside.com 2019 - 2024. All rights reserved.