英文:
Need query to display the departments which are having both MALE and FEMALE Employees
问题
需要查询以显示同时拥有男性和女性员工的部门。
SELECT deptname, sex
FROM departments
WHERE deptname IN (SELECT deptname FROM departments WHERE sex = 'M')
AND deptname IN (SELECT deptname FROM departments WHERE sex = 'F');
期望的输出为:
Deptname Sex
SALES M
SALES F
SALES M
SALES F
ENG M
ENG F
英文:
Need query to display the departments which are having both MALE and FEMALE Employees
CREATE TABLE departments(deptname VARCHAr2(20),sex VARCHAR2(2));
INSERT INTO departments VALUES('SALES','M');
INSERT INTO departments VALUES('SALES','F');
INSERT INTO departments VALUES('SALES','M');
INSERT INTO departments VALUES('SALES','F');
INSERT INTO departments VALUES('ENG','M');
INSERT INTO departments VALUES('ENG','F');
INSERT INTO departments VALUES('MKT','M');
INSERT INTO departments VALUES('CLE','F');
INSERT INTO departments VALUES('AUTO','M');
INSERT INTO departments VALUES('AUTO','M');
INSERT INTO departments VALUES('ENV','F');
INSERT INTO departments VALUES('ENV','F');
Expected Output
Deptname Sex
SALES M
SALES F
SALES M
SALES F
ENG M
ENG F
Please help me.
Thanks in Advance.
答案1
得分: 1
使用窗口函数来避免两次查询表:
SELECT *
FROM (SELECT d.*,
COUNT(DISTINCT sex) OVER (PARTITION BY deptname) sex_count
FROM departments d)
WHERE sex_count > 1
英文:
Or using a windowing function to avoid hitting the table twice:
SELECT *
FROM (SELECT d.*,
COUNT(DISTINCT sex) OVER (PARTITION BY deptname) sex_count
FROM departments d)
WHERE sex_count > 1
答案2
得分: 0
以下是翻译好的内容:
可以执行以下操作:
选择 *
从部门
其中部门名称在 (
选择部门名称从部门
按部门名称分组,具有计数(不同性别)> 1
)
请告诉我如果您需要任何其他的翻译帮助。
英文:
You can do:
select *
from departments
where deptname in (
select deptname from departments
group by deptname having count(distinct sex) > 1
)
答案3
得分: 0
从Oracle 12开始,您可以使用以下代码:
SELECT deptname, sex
FROM departments
MATCH_RECOGNIZE(
PARTITION BY deptname
ORDER BY sex
ALL ROWS PER MATCH
PATTERN (^ female+ male+ $)
DEFINE
female AS sex = 'F',
male AS sex = 'M'
);
它的输出是:
DEPTNAME | SEX |
---|---|
ENG | F |
ENG | M |
SALES | F |
SALES | F |
SALES | M |
SALES | M |
英文:
From Oracle 12, you can use:
SELECT deptname, sex
FROM departments
MATCH_RECOGNIZE(
PARTITION BY deptname
ORDER BY sex
ALL ROWS PER MATCH
PATTERN (^ female+ male+ $)
DEFINE
female AS sex = 'F',
male AS sex = 'M'
);
Which outputs:
DEPTNAME | SEX |
---|---|
ENG | F |
ENG | M |
SALES | F |
SALES | F |
SALES | M |
SALES | M |
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论