﻿ SQL: List the employees whose ID not starting with digit 68

# SQL Exercise: List the employees whose ID not starting with digit 68

## SQL employee Database: Exercise-111 with Solution

[An editor is available at the bottom of the page to write and execute the scripts.]

111. From the following table, write a SQL query to find those employees whose ID not start with the digit 68. Return employee ID, employee ID using trim function.

Sample table: employees

Sample Solution:

``````SELECT emp_id,
trim(to_char(emp_id,'99999'))
FROM employees
WHERE trim(to_char(emp_id,'99999')) NOT LIKE '68%';
``````

Sample Output:

``` emp_id | btrim
--------+-------
66928 | 66928
67832 | 67832
65646 | 65646
67858 | 67858
69062 | 69062
63679 | 63679
64989 | 64989
65271 | 65271
66564 | 66564
69000 | 69000
69324 | 69324
(11 rows)
```

Explanation:

The said query in SQL that return all "emp_id" values with leading zeros, except those that start with "68".

The "trim" function removes any leading or trailing spaces from the resulting string.

The query filters out any rows where the "emp_id" starts with the characters "68" using the "NOT LIKE" operator.

## Practice Online

Sample Database: employee

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous SQL Exercise: List the employees those who joined in 90's.
Next SQL Exercise: List the employees whose names containing the letter A.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.

﻿

## SQL: Tips of the Day

Grouped LIMIT in PostgreSQL: Show the first N rows for each group?

```db=# SELECT * FROM xxx;
id | section_id | name
----+------------+------
1 |          1 | A
2 |          1 | B
3 |          1 | C
4 |          1 | D
5 |          2 | E
6 |          2 | F
7 |          3 | G
8 |          2 | H
(8 rows)
```

I need the first 2 rows (ordered by name) for each section_id, i.e. a result similar to:

```id | section_id | name
----+------------+------
1 |          1 | A
2 |          1 | B
5 |          2 | E
6 |          2 | F
7 |          3 | G
(5 rows)
```

PostgreSQL v9.3 you can do a lateral join

```select distinct t_outer.section_id, t_top.id, t_top.name from t t_outer
join lateral (
select * from t t_inner
where t_inner.section_id = t_outer.section_id
order by t_inner.name
limit 2
) t_top on true
order by t_outer.section_id;
```

Database: PostgreSQL

Ref: https://bit.ly/3AfYwZI

We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook