{"id":32726,"date":"2023-04-06T13:18:41","date_gmt":"2023-04-06T20:18:41","guid":{"rendered":"https:\/\/coderpad.io\/?post_type=interview-questions&#038;p=32726"},"modified":"2025-05-12T11:20:05","modified_gmt":"2025-05-12T18:20:05","slug":"postgresql-interview-questions","status":"publish","type":"interview-questions","link":"https:\/\/coderpad.io\/interview-questions\/postgresql-interview-questions\/","title":{"rendered":"PostgreSQL"},"content":{"rendered":"\n<p>Popular for its ability to handle complex queries and its rich set of features, PostgreSQL is an open-source database management system also known for its strong concurrency control and support for advanced data types.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p>According to the <a href=\"https:\/\/db-engines.com\/en\/ranking\" target=\"_blank\" rel=\"noopener\">DB-Engines Ranking<\/a>, PostgreSQL is the fourth most popular database management system currently in use.<\/p>\n<\/blockquote>\n\n\n\n<p>To evaluate the PostgreSQL skills of developers during coding interviews, we&#8217;ve provided realistic coding exercises and interview questions below. <\/p>\n\n\n\n<p>Additionally, we&#8217;ve outlined a set of best practices to ensure that your interview questions accurately assess the candidates&#8217; PostgreSQL skills.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav aria-label=\"Table of Contents\"><ul><li><a href=\"#postgre-sql-example-question\">PostgreSQL example question<\/a><ul><\/ul><\/li><li><a href=\"#junior-postgre-sql-interview-questions\">Junior PostgreSQL interview questions<\/a><\/li><li><a href=\"#intermediate-postgre-sql-interview-questions\">Intermediate PostgreSQL interview questions<\/a><\/li><li><a href=\"#senior-postgre-sql-interview-questions\">Senior PostgreSQL interview questions<\/a><\/li><li><a href=\"#more-postgre-sql-interview-resources\">More PostgreSQL interview resources<\/a><\/li><li><a href=\"#interview-best-practices-for-postgre-sql-roles\">Interview best practices for PostgreSQL roles<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"postgre-sql-example-question\"><strong>PostgreSQL<\/strong> <strong>example question<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"correctly-query-this-employee-database\"><strong><strong>Correctly query this employee database<\/strong><\/strong><\/h3>\n\n\n\n<p>We have 4 questions that we will walk through together during the interview.<\/p>\n\n\n\n<p>This pad comes with a database attached to it that you can write queries against! We have placed the schema in the database tab in the right-hand pane, while also providing a diagram within the starter code to show the relationships.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"questions\">Questions:<\/h4>\n\n\n\n<p>1 &#8211; Sort the current employees at the company by who has the highest salary<\/p>\n\n\n\n<p>2 &#8211; Show all of the employees that worked on the project \u201cBuild a cool site\u201d<\/p>\n\n\n\n<p>3 &#8211; For the project \u201cBuild a cool site\u201d, if an employee was paid on the 1st and the 15th of every month, show how much each employee made for the duration of the project.<\/p>\n\n\n\n<p>4 &#8211; No Code Required! Talk us through how you\u2019d break down the data to figure out who was the most valuable employee to the company<\/p>\n\n\n<div\n\tclass=\"sandbox-embed responsive-embed  sandbox-embed--full-width\"\n\tstyle=\"padding-top: 85%\"\ndata-block-name=\"coderpad-sandbox-embed\">\n\t<iframe src=\"https:\/\/embed.coderpad.io\/sandbox?question_id=247252u0026use_question_button\" width=\"640\" height=\"544\" loading=\"lazy\" aria-label=\"Try out the CoderPad sandbox\"><\/iframe>\n<\/div>\n\n\n<section class=\"\n\ticon-lists-block\n\t\n\" data-block-name=\"coderpad-icon-lists-block\">\n    <div class=\"inner\">\n\n    \n            <div class=\"lists lists--2\">\n                            <div class=\"icon-list\">\n        <div class=\"top\">\n                            <div class=\"icon-container\">\n                    <svg class=\"icon icon-lightning-bolt\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 10 14\"><title>lightning bolt<\/title><path fill=\"currentColor\" d=\"M3.608 13.967c.185.079.4.013.508-.158l4.922-7.82a.41.41 0 0 0-.347-.63H5.407L6.628.511a.41.41 0 0 0-.744-.32L.962 8.011a.41.41 0 0 0 .347.63h3.284l-1.221 4.848a.41.41 0 0 0 .236.478Z\"\/><\/svg>\n\n                <\/div>\n            \n                            <h3 class=\"title\">PostgreSQL skills to assess<\/h3>\n                    <\/div>\n\n                    <ul class=\"links\">\n                                    <li>\n                        <a >Database design<\/a>\n                    <\/li>\n                                    <li>\n                        <a >SQL query building<\/a>\n                    <\/li>\n                                    <li>\n                        <a >Performance tuning<\/a>\n                    <\/li>\n                            <\/ul>\n        <\/div>\n\n                            <div class=\"icon-list\">\n        <div class=\"top\">\n                            <div class=\"icon-container\">\n                    <svg class=\"icon icon-briefcase\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 25 26\" fill=\"none\"><title>briefcase<\/title><path fill=\"currentColor\" d=\"M5.469 16.125a5.446 5.446 0 0 1-3.907-1.648v6.335a2.35 2.35 0 0 0 2.344 2.344h17.188a2.35 2.35 0 0 0 2.343-2.343v-6.336a5.446 5.446 0 0 1-3.906 1.648H5.47Z\"\/><path fill=\"currentColor\" d=\"M21.094 5.969h-3.125v-.782a2.344 2.344 0 0 0-2.344-2.343h-6.25a2.344 2.344 0 0 0-2.344 2.344v.78H3.906a2.35 2.35 0 0 0-2.344 2.345v2.343a3.906 3.906 0 0 0 3.907 3.906h2.343V12.22a.781.781 0 1 1 1.563 0v2.344h6.25v-2.344a.781.781 0 1 1 1.563 0v2.344h2.343a3.907 3.907 0 0 0 3.907-3.907V8.312a2.351 2.351 0 0 0-2.344-2.343Zm-12.5-.782a.781.781 0 0 1 .781-.78h6.25a.781.781 0 0 1 .781.78v.782H8.594v-.782Z\"\/><\/svg>\n\n                <\/div>\n            \n                            <h3 class=\"title\">Jobs using PostgreSQL<\/h3>\n                    <\/div>\n\n                    <ul class=\"links\">\n                                    <li>\n                        <a >Database Administrator<\/a>\n                    <\/li>\n                                    <li>\n                        <a >Data Analyst<\/a>\n                    <\/li>\n                                    <li>\n                        <a >Full stack developer<\/a>\n                    <\/li>\n                                    <li>\n                        <a >Business intelligence developer<\/a>\n                    <\/li>\n                            <\/ul>\n        <\/div>\n\n                    <\/div>\n    \n    <\/div>\n<\/section>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"junior-postgre-sql-interview-questions\">Junior PostgreSQL interview questions<\/h2>\n\n\n\n<p><strong>Question: Write a SQL query to retrieve the first name, last name, and salary of all employees in the &#8216;Sales&#8217; department.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> first_name, last_name, salary\n<span class=\"hljs-keyword\">FROM<\/span> employees\n<span class=\"hljs-keyword\">WHERE<\/span> department_id = (<span class=\"hljs-keyword\">SELECT<\/span> id <span class=\"hljs-keyword\">FROM<\/span> departments <span class=\"hljs-keyword\">WHERE<\/span> <span class=\"hljs-type\">name<\/span> = <span class=\"hljs-string\">'Sales'<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer:<\/strong> The above query will retrieve the first name, last name, and salary of all employees who belong to the &#8216;Sales&#8217; department.<\/p>\n\n\n\n<p><strong>Question: What is normalization in database design and why is it important?<\/strong><\/p>\n\n\n\n<p><strong>Answer:<\/strong> Normalization is the process of organizing data in a database to reduce redundancy and improve data integrity. It is important because it helps to ensure that data is consistent and accurate, which in turn helps to improve the efficiency of the database and reduce errors.<\/p>\n\n\n\n<p><strong>Question: Write a SQL query to retrieve the names of all employees who are working on a project with a budget of more than $100,000.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> e.first_name, e.last_name\n<span class=\"hljs-keyword\">FROM<\/span> employees e\n<span class=\"hljs-keyword\">JOIN<\/span> employees_projects ep <span class=\"hljs-keyword\">ON<\/span> e.id = ep.employee_id\n<span class=\"hljs-keyword\">JOIN<\/span> projects p <span class=\"hljs-keyword\">ON<\/span> ep.project_id = p.id\n<span class=\"hljs-keyword\">WHERE<\/span> p.budget &gt; <span class=\"hljs-number\">100000<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer: <\/strong>The above query will retrieve the names of all employees who are working on a project with a budget of more than $100,000.<\/p>\n\n\n\n<p><strong>Question: What is a primary key in a database table and why is it important?<\/strong><\/p>\n\n\n\n<p><strong>Answer:<\/strong> A primary key is a unique identifier for each row in a database table. It is important because it allows for efficient retrieval of data, helps to ensure data integrity, and allows for the creation of relationships between tables.<\/p>\n\n\n\n<p><strong>Question: Write a SQL query to retrieve the names of all employees who are not working on any project.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> first_name, last_name\n<span class=\"hljs-keyword\">FROM<\/span> employees\n<span class=\"hljs-keyword\">WHERE<\/span> id <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">IN<\/span> (<span class=\"hljs-keyword\">SELECT<\/span> employee_id <span class=\"hljs-keyword\">FROM<\/span> employees_projects);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer:<\/strong> The above query will retrieve the names of all employees who are not working on any project.<\/p>\n\n\n\n<p><strong>Question: What is an index in a database and why is it important?<\/strong><\/p>\n\n\n\n<p><strong>Answer:<\/strong> An index is a data structure that allows for efficient retrieval of data from a database table. It is important because it can significantly improve the performance of database queries, particularly when dealing with large datasets.<\/p>\n\n\n\n<p><strong>Question: Write a SQL query to retrieve the names of all employees who are working on a project that started before January 1, 2022 and ended after December 31, 2022.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> e.first_name, e.last_name\n<span class=\"hljs-keyword\">FROM<\/span> employees e\n<span class=\"hljs-keyword\">JOIN<\/span> employees_projects ep <span class=\"hljs-keyword\">ON<\/span> e.id = ep.employee_id\n<span class=\"hljs-keyword\">JOIN<\/span> projects p <span class=\"hljs-keyword\">ON<\/span> ep.project_id = p.id\n<span class=\"hljs-keyword\">WHERE<\/span> p.start_date &lt; <span class=\"hljs-string\">'2022-01-01'<\/span> <span class=\"hljs-keyword\">AND<\/span> p.end_date &gt; <span class=\"hljs-string\">'2022-12-31'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer:<\/strong> The above query will retrieve the names of all employees who are working on a project that started before January 1, 2022, and ended after December 31, 2022.<\/p>\n\n\n\n<p><strong>Question: What is a foreign key in a database table and how does it relate to other tables?<\/strong><\/p>\n\n\n\n<p><strong>Answer:<\/strong> A foreign key is a field in a database table that refers to the primary key of another table. It is used to establish relationships between tables and ensure data integrity by enforcing referential integrity constraints.<\/p>\n\n\n\n<p><strong>Question: Write a SQL query to retrieve the names of all employees who are working on more than one project.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> first_name, last_name\n<span class=\"hljs-keyword\">FROM<\/span> employees\n<span class=\"hljs-keyword\">WHERE<\/span> id <span class=\"hljs-keyword\">IN<\/span> (<span class=\"hljs-keyword\">SELECT<\/span> employee_id <span class=\"hljs-keyword\">FROM<\/span> employees_projects <span class=\"hljs-keyword\">GROUP<\/span> <span class=\"hljs-keyword\">BY<\/span> employee_id <span class=\"hljs-keyword\">HAVING<\/span> COUNT(*) &gt; <span class=\"hljs-number\">1<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer:<\/strong> The above query will retrieve the names of all employees who are working on more than one project.<\/p>\n\n\n\n<p><strong>Question: What is a transaction in a database and why is it important?<\/strong><\/p>\n\n\n\n<p><strong>Answer<\/strong>: A <a href=\"https:\/\/coderpad.io\/blog\/development\/understanding-transactions-in-sqlalchemy\/\">transaction<\/a> is a sequence of database operations that are performed as a single unit of work. It is important because it helps to ensure data consistency and integrity, even in the face of unexpected events such as system failures or network disruptions. Transactions allow for multiple operations to be treated as a single unit, ensuring that all of the changes are either committed together or rolled back together if an error occurs. This helps to ensure that data is always in a valid state and that the database remains consistent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"intermediate-postgre-sql-interview-questions\">Intermediate PostgreSQL interview questions<\/h2>\n\n\n\n<p><strong>Question: Write a query to display the total salary of employees in each department.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> <span class=\"hljs-keyword\">SUM<\/span>(salary), department_id <span class=\"hljs-keyword\">FROM<\/span> employees <span class=\"hljs-keyword\">GROUP<\/span> <span class=\"hljs-keyword\">BY<\/span> department_id;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Question: What is a subquery in PostgreSQL and how is it used?<\/strong><\/p>\n\n\n\n<p>A subquery is a query that is nested within another query. It is used to retrieve data that will be used in the main query&#8217;s <code>WHERE<\/code> clause to further restrict the data that is retrieved. Subqueries can also be used in the <code>SELECT<\/code> clause, FROM clause, or <code>HAVING<\/code> clause to calculate values or retrieve data.<\/p>\n\n\n\n<p><strong>Question: Write a query to find the titles of all projects that have at least one employee assigned to them.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> title <span class=\"hljs-keyword\">FROM<\/span> projects <span class=\"hljs-keyword\">JOIN<\/span> employees_projects <span class=\"hljs-keyword\">ON<\/span> projects.id = employees_projects.project_id;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Question: What is the purpose of the <code>EXPLAIN<\/code> command in PostgreSQL?<\/strong><\/p>\n\n\n\n<p>The <code>EXPLAIN<\/code> command in PostgreSQL is used to analyze how a query will be executed by the PostgreSQL query planner. It returns a query plan that shows the sequence of operations that will be performed by the query planner to retrieve the data. This information can be used to optimize the performance of the query by identifying which parts of the query are taking the most time to execute.<\/p>\n\n\n\n<p><strong>Question: Write a query to find the names of all employees who have worked on a project with a budget greater than $100,000.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> first_name, last_name <span class=\"hljs-keyword\">FROM<\/span> employees <span class=\"hljs-keyword\">JOIN<\/span> employees_projects <span class=\"hljs-keyword\">ON<\/span> employees.id = employees_projects.employee_id <span class=\"hljs-keyword\">JOIN<\/span> projects <span class=\"hljs-keyword\">ON<\/span> projects.id = employees_projects.project_id <span class=\"hljs-keyword\">WHERE<\/span> projects.budget &gt; <span class=\"hljs-number\">100000<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Question: What is a trigger in PostgreSQL and how is it used?<\/strong><\/p>\n\n\n\n<p>A trigger in PostgreSQL is a special kind of function that is automatically executed in response to certain events, such as a change to a table&#8217;s data. Triggers can be used to enforce business rules, such as validating data before it is inserted into a table, or to maintain data integrity by automatically updating related tables when data in one table is modified.<\/p>\n\n\n\n<p><strong>Question: Write a query to find the average salary of employees in each department, sorted by department name in ascending order.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> <span class=\"hljs-keyword\">AVG<\/span>(salary), departments.name <span class=\"hljs-keyword\">FROM<\/span> employees <span class=\"hljs-keyword\">JOIN<\/span> departments <span class=\"hljs-keyword\">ON<\/span> employees.department_id = departments.id <span class=\"hljs-keyword\">GROUP<\/span> <span class=\"hljs-keyword\">BY<\/span> department_id <span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span> departments.name <span class=\"hljs-keyword\">ASC<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Question: What is a materialized view in PostgreSQL and how is it different from a regular view?<\/strong><\/p>\n\n\n\n<p>A materialized view in PostgreSQL is a view that stores the results of a query as a physical table. Unlike a regular view, which is just a saved query that is executed each time it is accessed, a materialized view&#8217;s results are stored in the database and can be accessed quickly without having to execute the underlying query each time. Materialized views can be refreshed manually or automatically on a schedule.<\/p>\n\n\n\n<p><strong>Question: Write a query to find the number of employees who have worked on each project.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs shcb-wrap-lines\">SELECT COUNT(employee_id), project_id FROM employees_projects GROUP BY project_id;<\/code><\/span><\/pre>\n\n\n<p><strong>Question: What is a window function in PostgreSQL and how is it used?<\/strong><\/p>\n\n\n\n<p>A <a href=\"https:\/\/coderpad.io\/blog\/development\/window-functions-aggregate-data-postgres\/\">window function<\/a> in PostgreSQL is a special kind of function that operates on a set of rows, called a window, within a result set. Window functions are used to perform calculations that require access to multiple rows in a result set, such as running totals or moving averages. Window functions can be used in <code>SELECT<\/code>, <code>ORDER BY<\/code>, and <code>HAVING<\/code> clauses, and can also be used to partition the result set into subsets based on one or more columns.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"senior-postgre-sql-interview-questions\">Senior PostgreSQL interview questions<\/h2>\n\n\n\n<p><strong>Question: The following function is intended to return a table of all employees who earn a salary greater than the average salary in their department. However, the query fail with an error &#8220;column reference &#8216;department_id&#8217; in the subquery is ambiguous&#8221;. How can it be fixed?<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">FUNCTION<\/span> get_high_earners() <span class=\"hljs-keyword\">RETURNS<\/span> <span class=\"hljs-keyword\">TABLE<\/span> (\n\u00a0id <span class=\"hljs-type\">INT<\/span>,\n\u00a0first_name <span class=\"hljs-type\">VARCHAR<\/span>,\n\u00a0last_name <span class=\"hljs-type\">VARCHAR<\/span>,\n\u00a0salary <span class=\"hljs-type\">INT<\/span>,\n\u00a0department_id <span class=\"hljs-type\">INT<\/span>\n) <span class=\"hljs-keyword\">AS<\/span> $$<span class=\"pgsql\">\n<span class=\"hljs-keyword\">BEGIN<\/span>\n\u00a0<span class=\"hljs-keyword\">RETURN QUERY<\/span> <span class=\"hljs-keyword\">SELECT<\/span>\u00a0e.id, e.first_name, e.last_name, e.salary, e.department_id\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">FROM<\/span> employees e\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">JOIN<\/span> (<span class=\"hljs-keyword\">SELECT<\/span> department_id, AVG(salary) <span class=\"hljs-keyword\">AS<\/span> avg_salary\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">FROM<\/span> employees\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">GROUP<\/span> <span class=\"hljs-keyword\">BY<\/span> department_id) d\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">ON<\/span> e.department_id = d.department_id\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">WHERE<\/span> e.salary &gt; d.avg_salary;\n<span class=\"hljs-keyword\">END<\/span>;\n$$<\/span> <span class=\"hljs-keyword\">LANGUAGE<\/span> plpgsql;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer:<\/strong> The issue is that the subquery that calculates the average salary is missing an alias to the table &#8220;employees&#8221;. This alias must be used for all the subquery fields: department_id and salary. Here is the fixed code.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">FUNCTION<\/span> get_high_earners() <span class=\"hljs-keyword\">RETURNS<\/span> <span class=\"hljs-keyword\">TABLE<\/span> (\n\u00a0id <span class=\"hljs-type\">INT<\/span>,\n\u00a0first_name <span class=\"hljs-type\">VARCHAR<\/span>,\n\u00a0last_name <span class=\"hljs-type\">VARCHAR<\/span>,\n\u00a0salary <span class=\"hljs-type\">INT<\/span>,\n\u00a0department_id <span class=\"hljs-type\">INT<\/span>\n) <span class=\"hljs-keyword\">AS<\/span> $$<span class=\"pgsql\">\n<span class=\"hljs-keyword\">BEGIN<\/span>\n\u00a0<span class=\"hljs-keyword\">RETURN QUERY<\/span> <span class=\"hljs-keyword\">SELECT<\/span>\u00a0e.id, e.first_name, e.last_name, e.salary, e.department_id\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">FROM<\/span> employees e\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">JOIN<\/span> (<span class=\"hljs-keyword\">SELECT<\/span> e2.department_id, AVG(e2.salary) <span class=\"hljs-keyword\">AS<\/span> avg_salary\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">FROM<\/span> employees e2\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">GROUP<\/span> <span class=\"hljs-keyword\">BY<\/span> e2.department_id) d\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">ON<\/span> e.department_id = d.department_id\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">WHERE<\/span> e.salary &gt; d.avg_salary;\n<span class=\"hljs-keyword\">END<\/span>;\n$$<\/span> <span class=\"hljs-keyword\">LANGUAGE<\/span> plpgsql;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Question: What are indexes in PostgreSQL and how can they improve query performance?<\/strong><\/p>\n\n\n\n<p><strong>Answer:<\/strong> Indexes are database structures that are used to speed up the process of querying data. An index is essentially a data structure that contains a subset of the data in a table and provides a quick way to look up data based on a particular value. By creating an index on a table column, queries that filter or sort based on that column can run much faster because the index can be used to look up the data directly, rather than scanning the entire table.<\/p>\n\n\n\n<p><strong>Question: The following query is intended to retrieve a list of all projects along with the total number of employees who are assigned to each project. However, the query is returning an error. What is wrong with the code and how can it be fixed?<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> p.title, COUNT(ep.employee_id) <span class=\"hljs-keyword\">AS<\/span> num_employees\n<span class=\"hljs-keyword\">FROM<\/span> projects p\n<span class=\"hljs-keyword\">JOIN<\/span> employees_projects ep\n<span class=\"hljs-keyword\">ON<\/span> p.id = ep.project_id\n<span class=\"hljs-keyword\">GROUP<\/span> <span class=\"hljs-keyword\">BY<\/span> p.id;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer:<\/strong> The issue with this code is that the <code>GROUP BY<\/code> clause should reference the title column instead of the id column since we want to group by project title, not project id. Changing the <code>GROUP BY<\/code> clause to reference <code>p.title<\/code> will fix the issue:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> p.title, COUNT(ep.employee_id) <span class=\"hljs-keyword\">AS<\/span> num_employees\n<span class=\"hljs-keyword\">FROM<\/span> projects p\n<span class=\"hljs-keyword\">JOIN<\/span> employees_projects ep\n<span class=\"hljs-keyword\">ON<\/span> p.id = ep.project_id\n<span class=\"hljs-keyword\">GROUP<\/span> <span class=\"hljs-keyword\">BY<\/span> p.title;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Question: What are stored procedures in PostgreSQL and how can they be used to simplify database administration?<\/strong><\/p>\n\n\n\n<p><strong>Answer:<\/strong> Stored procedures are precompiled database code that can be used to perform complex operations or calculations. They can be used to simplify database administration by encapsulating complex logic into a single function that can be called from other parts of the system. Stored procedures can also be used to enforce business rules or perform validation checks before data is inserted or updated, ensuring data consistency across the database.<\/p>\n\n\n\n<p><strong>Question:The following trigger is intended to update the <code>modified_date<\/code> column in the employees table whenever a row is updated. However, the trigger is not working as intended.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">OR REPLACE<\/span> <span class=\"hljs-keyword\">FUNCTION<\/span> update_employee_mod_date() <span class=\"hljs-keyword\">RETURNS<\/span> <span class=\"hljs-type\">TRIGGER<\/span> <span class=\"hljs-keyword\">AS<\/span> $$<span class=\"pgsql\">\n<span class=\"hljs-keyword\">BEGIN<\/span>\n  <span class=\"hljs-built_in\">NEW<\/span>.modified_date := NOW();\n  <span class=\"hljs-keyword\">RETURN<\/span> <span class=\"hljs-built_in\">NEW<\/span>;\n<span class=\"hljs-keyword\">END<\/span>;\n$$<\/span> <span class=\"hljs-keyword\">LANGUAGE<\/span> plpgsql;\n\n<span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TRIGGER<\/span> update_employee_mod_date_trigger\n<span class=\"hljs-keyword\">BEFORE<\/span> <span class=\"hljs-keyword\">UPDATE<\/span> <span class=\"hljs-keyword\">ON<\/span> employees\n<span class=\"hljs-keyword\">FOR<\/span> <span class=\"hljs-keyword\">EACH<\/span> <span class=\"hljs-keyword\">ROW<\/span>\n<span class=\"hljs-keyword\">EXECUTE<\/span> <span class=\"hljs-keyword\">FUNCTION<\/span> update_employee_mod_date();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer: <\/strong>The issue with the trigger is that it is not handling updates to the <code>modified_date<\/code> column correctly. When the trigger sets the value of the <code>modified_date<\/code> column to <code>NOW()<\/code>, it triggers another update, which in turn triggers the trigger again in an infinite loop. This can be fixed by checking if the <code>modified_date<\/code> column has changed before updating it. Here&#8217;s the corrected code:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">OR REPLACE<\/span> <span class=\"hljs-keyword\">FUNCTION<\/span> update_employee_mod_date() <span class=\"hljs-keyword\">RETURNS<\/span> <span class=\"hljs-type\">TRIGGER<\/span> <span class=\"hljs-keyword\">AS<\/span> $$<span class=\"pgsql\">\n<span class=\"hljs-keyword\">BEGIN<\/span>\n  <span class=\"hljs-keyword\">IF<\/span> <span class=\"hljs-built_in\">NEW<\/span>.modified_date = <span class=\"hljs-built_in\">OLD<\/span>.modified_date <span class=\"hljs-keyword\">THEN<\/span>\n    <span class=\"hljs-built_in\">NEW<\/span>.modified_date := NOW();\n  <span class=\"hljs-keyword\">END<\/span> <span class=\"hljs-keyword\">IF<\/span>;\n  <span class=\"hljs-keyword\">RETURN<\/span> <span class=\"hljs-built_in\">NEW<\/span>;\n<span class=\"hljs-keyword\">END<\/span>;\n$$<\/span> <span class=\"hljs-keyword\">LANGUAGE<\/span> plpgsql;\n\n<span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TRIGGER<\/span> update_employee_mod_date_trigger\n<span class=\"hljs-keyword\">BEFORE<\/span> <span class=\"hljs-keyword\">UPDATE<\/span> <span class=\"hljs-keyword\">ON<\/span> employees\n<span class=\"hljs-keyword\">FOR<\/span> <span class=\"hljs-keyword\">EACH<\/span> <span class=\"hljs-keyword\">ROW<\/span>\n<span class=\"hljs-keyword\">EXECUTE<\/span> <span class=\"hljs-keyword\">FUNCTION<\/span> update_employee_mod_date();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Question: What is the difference between a view and a table in PostgreSQL and when should you use one over the other?<\/strong><\/p>\n\n\n\n<p><strong>Answer: <\/strong>A table in PostgreSQL is a collection of data stored in rows and columns, while a view is a virtual table that is derived from a query. Views can be used to simplify complex queries by abstracting away details and providing a simpler, more focused interface to the data. Views can also be used to restrict access to sensitive data by hiding certain columns or rows from users who do not have permission to see them. Tables are typically used to store large amounts of data that will be frequently accessed, while views are more suitable for ad-hoc or reporting queries.<\/p>\n\n\n\n<p><strong>Question: The following query is intended to retrieve a list of all employees and their corresponding department name. However, the query is returning an error. What is wrong with the code and how can it be fixed?<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\">SELECT e.first_name, e.last_name, d.name <span class=\"hljs-keyword\">AS<\/span> department_name\nFROM employees e\nJOIN departments d\nON e.department_id = d.id;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer:<\/strong> The query is not returning an error. However, if there are no corresponding departments for any of the employees, those employees will not be included in the result set. To include all employees regardless of whether they have a corresponding department, you should use a <code>LEFT JOIN<\/code> instead of an <code>INNER JOIN<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql shcb-wrap-lines\"><span class=\"hljs-keyword\">SELECT<\/span> e.first_name, e.last_name, d.name <span class=\"hljs-keyword\">AS<\/span> department_name\n<span class=\"hljs-keyword\">FROM<\/span> employees e\n<span class=\"hljs-keyword\">LEFT JOIN<\/span> departments d\n<span class=\"hljs-keyword\">ON<\/span> e.department_id = d.id;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This will ensure that all employees are included in the result set, with <code>NULL<\/code> values in the <code>department_name<\/code> column for any employees who do not have a corresponding department.<\/p>\n\n\n\n<p><strong>Question: What are window functions in PostgreSQL and how can they be used to analyze data?<\/strong><\/p>\n\n\n\n<p><strong>Answer: <\/strong>Window functions are a type of function in PostgreSQL that allow you to perform calculations across a set of rows that are related to the current row, without grouping the rows together. Window functions are particularly useful when you need to perform calculations that depend on the values of other rows in the same table, such as calculating a running total or a moving average.<\/p>\n\n\n\n<p>Window functions can be used to analyze data by providing more flexibility and power than traditional aggregate functions. They can be used to calculate running totals, moving averages, rank data, and more. By using window functions, you can perform complex calculations over a set of rows without having to group the rows together or use subqueries.<\/p>\n\n\n\n<p><strong>Question: A junior developer has created a query to retrieve a list of all employees and their corresponding projects, but it is causing a memory leak in the database. Can you provide a fixed query to retrieve the same information without causing a memory leak?<\/strong><\/p>\n\n\n\n<p>Erroneous Query:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\">SELECT e.id, e.first_name, e.last_name, p.title <span class=\"hljs-keyword\">AS<\/span> project_title\nFROM employees e\nJOIN employees_projects ep\nON e.id = ep.employee_id\nJOIN projects p\nON ep.project_id = p.id;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Answer:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\">SELECT e.id, e.first_name, e.last_name, \n       array_agg(p.title) <span class=\"hljs-keyword\">AS<\/span> project_titles\nFROM employees e\nJOIN employees_projects ep\nON e.id = ep.employee_id\nJOIN projects p\nON ep.project_id = p.id\nGROUP BY e.id;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The issue with the original query is that it was retrieving all employees and their corresponding projects using a <code>JOIN<\/code>, which can cause a memory leak if the number of employees and projects is very large. The corrected query uses <code>array_agg<\/code> function to aggregate all project titles into an array for each employee, and then groups the results by employee ID to avoid the memory leak issue.<\/p>\n\n\n\n<p><strong>Question: What are common table expressions (CTEs) in PostgreSQL and how can they be used to simplify complex queries?<\/strong><\/p>\n\n\n\n<p><strong>Answer: <\/strong>Common table expressions (CTEs) are a way to define a temporary result set that can be referenced within a larger query. CTEs are particularly useful when you need to simplify complex queries by breaking them down into smaller, more manageable pieces.<\/p>\n\n\n\n<p>CTEs are defined using the WITH clause, which allows you to create a temporary table that can be used within the context of the larger query. Once defined, the CTE can be referenced in the same way as a regular table, allowing you to perform additional joins and filtering operations on the temporary result set.<\/p>\n\n\n\n<p>By using CTEs, you can simplify complex queries and make them more readable and maintainable. Additionally, CTEs can improve query performance by allowing the database to optimize the execution plan of the query based on the defined CTE.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"more-postgre-sql-interview-resources\">More PostgreSQL interview resources<\/h2>\n\n\n\n<p>For more guides on improving your knowledge of PostgreSQL and acing interviews, we have outlined helpful blog posts below:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/coderpad.io\/blog\/development\/postgresql-like-operator-a-detailed-guide\/\">PostgreSQL LIKE Operator: A Detailed Guide<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/coderpad.io\/blog\/development\/postgresql-system-catalogs-metadata\/\">How to Get Metadata from PostgreSQL System Catalogs<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/coderpad.io\/blog\/development\/sql-functions-and-techniques-every-data-person-should-know\/\">SQL Functions and Techniques Every Data Person Should Know<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/coderpad.io\/blog\/development\/window-functions-aggregate-data-postgres\/\">Why &amp; How to Use Window Functions to Aggregate Data in Postgres<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/coderpad.io\/blog\/development\/understanding-transactions-in-sqlalchemy\/\">Understanding Transactions in SQLAlchemy<\/a><\/li>\n<\/ul>\n\n\n<section class=\"logo-row-block\">\n    <div class=\"inner\">\n                    <h2 class=\"headline\">1,000 Companies use CoderPad to Screen and Interview Developers<\/h2>\n        \n                    <div class=\"logos logos--grayscale\" >\n                                    <div>    <svg class=\"logo logo-spotify\" role=\"img\" viewBox=\"0 0 538 167\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><title>Spotify<\/title><path d=\"M83.743 0C37.494 0 0 37.493 0 83.742c0 46.251 37.494 83.741 83.743 83.741 46.254 0 83.744-37.49 83.744-83.741 0-46.246-37.49-83.738-83.745-83.738L83.743 0zm38.404 120.78a5.217 5.217 0 0 1-7.18 1.73c-19.662-12.01-44.414-14.73-73.564-8.07a5.222 5.222 0 0 1-6.249-3.93 5.213 5.213 0 0 1 3.926-6.25c31.9-7.288 59.263-4.15 81.337 9.34 2.46 1.51 3.24 4.72 1.73 7.18zm10.25-22.802c-1.89 3.072-5.91 4.042-8.98 2.152-22.51-13.836-56.823-17.843-83.448-9.761-3.453 1.043-7.1-.903-8.148-4.35a6.538 6.538 0 0 1 4.354-8.143c30.413-9.228 68.222-4.758 94.072 11.127 3.07 1.89 4.04 5.91 2.15 8.976v-.001zm.88-23.744c-26.99-16.031-71.52-17.505-97.289-9.684-4.138 1.255-8.514-1.081-9.768-5.219a7.835 7.835 0 0 1 5.221-9.771c29.581-8.98 78.756-7.245 109.83 11.202a7.823 7.823 0 0 1 2.74 10.733c-2.2 3.722-7.02 4.949-10.73 2.739h-.004zm94.56 3.072c-14.46-3.448-17.03-5.868-17.03-10.953 0-4.804 4.52-8.037 11.25-8.037 6.52 0 12.98 2.455 19.76 7.509.2.153.46.214.71.174a.933.933 0 0 0 .63-.386l7.06-9.952a.95.95 0 0 0-.18-1.288c-8.07-6.473-17.15-9.62-27.77-9.62-15.61 0-26.52 9.369-26.52 22.774 0 14.375 9.41 19.465 25.67 23.394 13.83 3.187 16.17 5.857 16.17 10.629 0 5.29-4.72 8.58-12.32 8.58-8.44 0-15.33-2.85-23.03-9.51a.98.98 0 0 0-.69-.23c-.26.02-.49.14-.65.33l-7.92 9.42c-.33.4-.29.98.09 1.32 8.96 8 19.98 12.22 31.88 12.22 16.82 0 27.69-9.19 27.69-23.42.03-12.007-7.16-18.657-24.77-22.941l-.03-.013zm62.86-14.26c-7.29 0-13.27 2.872-18.21 8.757v-6.624a.945.945 0 0 0-.94-.949h-12.95c-.52 0-.94.426-.94.949v73.601c0 .52.42.95.94.95h12.95c.52 0 .94-.43.94-.95v-23.23c4.94 5.53 10.92 8.24 18.21 8.24 13.55 0 27.27-10.43 27.27-30.369.02-19.943-13.7-30.376-27.26-30.376l-.01.001zm12.21 30.375c0 10.149-6.25 17.239-15.21 17.239-8.85 0-15.53-7.41-15.53-17.239 0-9.83 6.68-17.238 15.53-17.238 8.81-.001 15.21 7.247 15.21 17.237v.001zm50.21-30.375c-17.45 0-31.12 13.436-31.12 30.592 0 16.972 13.58 30.262 30.91 30.262 17.51 0 31.22-13.39 31.22-30.479 0-17.031-13.62-30.373-31.01-30.373v-.002zm0 47.714c-9.28 0-16.28-7.46-16.28-17.344 0-9.929 6.76-17.134 16.07-17.134 9.34 0 16.38 7.457 16.38 17.351 0 9.927-6.8 17.127-16.17 17.127zm68.27-46.53h-14.25V49.664a.944.944 0 0 0-.94-.948h-12.95c-.52 0-.95.426-.95.948V64.23h-6.22c-.52 0-.94.426-.94.949v11.127c0 .522.42.949.94.949h6.22v28.795c0 11.63 5.79 17.53 17.22 17.53 4.64 0 8.49-.96 12.12-3.02.3-.16.48-.48.48-.82v-10.6c0-.32-.17-.63-.45-.8a.918.918 0 0 0-.92-.04c-2.49 1.25-4.9 1.83-7.6 1.83-4.15 0-6.01-1.89-6.01-6.11V77.26h14.25c.52 0 .94-.426.94-.949V65.185a.918.918 0 0 0-.93-.949l-.01-.006zm49.64.057v-1.789c0-5.263 2.02-7.61 6.54-7.61 2.7 0 4.87.536 7.3 1.346.3.094.61.047.85-.132a.94.94 0 0 0 .39-.77v-10.91a.937.937 0 0 0-.67-.909c-2.56-.763-5.84-1.546-10.76-1.546-11.95 0-18.28 6.734-18.28 19.467v2.74h-6.22c-.52 0-.95.426-.95.948v11.184c0 .522.43.949.95.949h6.22v44.405c0 .53.43.95.95.95h12.94c.53 0 .95-.42.95-.95V77.258h12.09l18.52 44.402c-2.1 4.66-4.17 5.59-6.99 5.59-2.28 0-4.69-.68-7.14-2.03a1.03 1.03 0 0 0-.75-.07c-.25.09-.46.27-.56.51l-4.39 9.63c-.21.46-.03.99.41 1.23 4.58 2.48 8.71 3.54 13.82 3.54 9.56 0 14.85-4.46 19.5-16.44l22.46-58.037a.925.925 0 0 0-.1-.881.924.924 0 0 0-.77-.412h-13.48c-.41 0-.77.257-.9.636l-13.81 39.434-15.12-39.46a.944.944 0 0 0-.88-.61h-22.12v-.003zm-28.78-.057h-12.95c-.52 0-.95.426-.95.949v56.481c0 .53.43.95.95.95h12.95c.52 0 .95-.42.95-.95V65.183a.947.947 0 0 0-.95-.949v-.004zm-6.4-25.719c-5.13 0-9.29 4.152-9.29 9.281a9.289 9.289 0 0 0 9.29 9.289c5.13 0 9.28-4.157 9.28-9.289 0-5.128-4.16-9.281-9.28-9.281z\" fill=\"#1ED760\"\/><\/svg>\n\n<\/div>\n                                    <div>    <svg class=\"logo logo-linkedin\" role=\"img\" viewBox=\"0 0 882 224\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><title>LinkedIn<\/title><g fill=\"#0A66C2\"><path d=\"M0 33.083h34.482V158.69h63.84v31.822H0V33.083zM113.566 83.77h33.127v106.682h-33.127V83.77zm16.563-53.037c10.541.002 19.214 8.676 19.214 19.217 0 10.542-8.675 19.217-19.217 19.217-10.542 0-19.217-8.675-19.217-19.217 0-10.542 8.675-19.217 19.217-19.217h.003m155.137 2.326h33.127v94.083l37.544-43.42h40.615l-43.479 49.39 42.564 57.385h-41.636l-35.166-52.734h-.435v52.727h-33.127l-.007-157.43zM165.061 83.781h31.812v14.58h.452a34.841 34.841 0 0 1 31.367-17.234c33.593 0 39.776 22.102 39.776 50.815v58.503h-33.127v-51.867c0-12.38-.227-28.296-17.253-28.296-17.219 0-19.876 13.482-19.876 27.395v52.755h-33.127l-.024-106.65z\"\/><path d=\"M466.315 124.703c.003-.156.005-.313.005-.469 0-10.896-8.966-19.862-19.862-19.862-.16 0-.32.002-.482.006-11.965-.745-22.467 8.373-23.409 20.325h43.748zm28.061 47.274a58.385 58.385 0 0 1-45.3 21.226c-33.128 0-59.65-22.113-59.65-56.354 0-34.24 26.52-56.343 59.65-56.343 30.962 0 50.38 22.084 50.38 56.343v10.387h-76.889c1.97 12.124 12.685 21.038 24.965 20.77a28.298 28.298 0 0 0 23.641-13.037l23.203 17.008zm74.128-62.42c-16.563 0-26.5 11.06-26.5 27.175 0 16.115 9.933 27.184 26.5 27.184s26.526-11.042 26.526-27.184c0-16.143-9.942-27.175-26.526-27.175m57.023 80.875H595.03v-14.148h-.452a41.684 41.684 0 0 1-32.934 16.798c-31.829 0-52.796-22.972-52.796-55.457 0-29.834 18.555-57.23 49.055-57.23 13.71 0 26.516 3.751 34.028 14.148h.435V33.048h33.157l.004 157.384zm223.637.062h-33.127v-51.878c0-12.37-.22-28.296-17.229-28.296-17.254 0-19.894 13.478-19.894 27.395v52.775h-33.126V83.808h31.801v14.58h.446a34.893 34.893 0 0 1 31.377-17.233c33.575 0 39.766 22.084 39.766 50.815l-.014 58.524zM708.41 69.225h-.004c-10.546 0-19.224-8.677-19.224-19.223s8.678-19.224 19.224-19.224c10.545 0 19.222 8.676 19.224 19.22v.004c0 10.544-8.676 19.222-19.22 19.223m16.563 121.27h-33.16V83.807h33.16v106.688zM865.678.015H675.165c-8.943-.1-16.388 7.17-16.497 16.113v191.304c.105 8.948 7.55 16.228 16.497 16.132h190.513c8.97.113 16.44-7.166 16.56-16.132V16.116c-.12-8.962-7.6-16.233-16.56-16.115\"\/><\/g><\/svg>\n\n<\/div>\n                                    <div>    \n<svg class=\"logo logo-noom\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 132 30\"><title>Noom<\/title>\n<path fill=\"#191717\" d=\"M43.5215 0.160018C40.4528 0.61067 36.9072 2.55655 34.7417 4.97842C33.9555 5.85759 32.6595 7.79896 32.6595 8.09746C32.6595 8.20739 32.5948 8.29723 32.5156 8.29723C32.4365 8.29723 32.3718 8.38925 32.3718 8.50181C32.3718 8.6145 32.2492 8.95843 32.0993 9.26624C31.9494 9.5742 31.7478 10.1209 31.6513 10.4813C31.5547 10.8417 31.4224 11.2676 31.3572 11.4278C31.1207 12.0087 31.0378 12.9243 31.0339 14.9951C31.0302 17.0981 31.0813 17.4911 31.6134 19.4463C32.7703 23.6967 36.5718 27.6713 40.8794 29.1339C44.2834 30.2899 47.1621 30.2887 50.6336 29.1301C54.9639 27.6849 58.3006 24.2219 59.9742 19.4361C60.6273 17.5681 60.6235 12.5185 59.9673 10.5541C58.3883 5.82702 54.9669 2.31878 50.4566 0.80185C48.1992 0.0426589 45.8195 -0.177498 43.5215 0.160018ZM77.1865 0.143564C73.8702 0.648236 70.3893 2.55815 68.2578 5.04249C66.8931 6.63295 66.4993 7.28556 65.4584 9.68049C65.0213 10.6863 64.7855 11.8563 64.4935 14.4688C64.4197 15.1285 64.567 16.5508 64.91 18.4897C65.4505 21.5457 67.762 25.0536 70.5856 27.1026C77.4259 32.0669 86.6685 30.4643 91.5496 23.4675C92.551 22.0321 93.408 19.9698 93.7997 18.0529C93.8898 17.6124 94.0245 16.9726 94.0991 16.6312C94.1738 16.2896 94.2348 15.5534 94.2348 14.9951C94.2348 14.4369 94.1738 13.7007 94.0991 13.3591C94.0245 13.0176 93.8898 12.3778 93.7997 11.9374C93.1594 8.80365 91.8178 6.40376 89.4305 4.12168C87.7787 2.54257 86.1858 1.56483 84.0803 0.83767C81.8279 0.0596952 79.3655 -0.188127 77.1865 0.143564ZM3.19184 0.755839C1.9835 1.16601 1.00693 2.05698 0.434049 3.27177L0 4.19244L0.0366864 16.8378L0.0735165 29.483L2.4833 29.5228L4.89308 29.5627V17.8465C4.89308 11.4026 4.94861 6.09566 5.01652 6.05314C5.08428 6.01063 5.29389 6.28524 5.48207 6.66338C5.67039 7.04152 5.85756 7.38355 5.89828 7.42359C5.98978 7.51372 6.28845 8.04198 6.68063 8.80685C6.84478 9.12718 7.01153 9.42204 7.05109 9.46208C7.09065 9.50212 7.2574 9.79698 7.42155 10.1173C7.80769 10.8704 8.11154 11.409 8.20203 11.5006C8.29252 11.5922 8.59637 12.1308 8.98251 12.8838C9.14666 13.2042 9.31341 13.499 9.35297 13.5391C9.44346 13.6306 9.74731 14.1692 10.1335 14.9223C10.2976 15.2427 10.4643 15.5375 10.5039 15.5775C10.5435 15.6176 10.6629 15.8067 10.7692 15.9979C11.0669 16.533 11.4813 17.2724 11.7987 17.8344C12.4349 18.9611 12.6392 19.3211 13.039 20.0185C13.2685 20.419 13.5525 20.9431 13.6703 21.1834C13.788 21.4236 13.9169 21.653 13.9564 21.693C14.0274 21.7645 14.1251 21.9333 14.705 22.987C14.8641 23.2763 15.0429 23.5786 15.1023 23.6587C15.1616 23.7388 15.4062 24.1647 15.6457 24.6051C17.0348 27.1589 17.3303 27.6413 17.8122 28.1424C18.1043 28.4462 18.6998 28.8716 19.1352 29.0876C19.8196 29.427 20.103 29.48 21.222 29.477C22.3056 29.4742 22.6459 29.4126 23.3081 29.1003C24.527 28.5253 25.3965 27.4549 25.8835 25.9303C25.9933 25.5865 26.0416 21.6412 26.0416 13.0105V0.585625L25.7179 0.504668C25.5398 0.460112 24.4555 0.442494 23.3081 0.4655L21.222 0.507289L21.1501 12.3742L21.0782 24.2411L20.6774 23.5859C20.3009 22.9704 19.6694 21.8721 18.4176 19.6545C18.1237 19.134 17.4741 17.9873 16.9741 17.1064C16.474 16.2255 15.8916 15.1771 15.6798 14.7767C15.4682 14.3763 15.0995 13.7211 14.8607 13.3206C13.7593 11.4745 12.9497 10.0291 12.9497 9.90895C12.9497 9.83673 12.9006 9.75577 12.8406 9.72898C12.7805 9.70233 12.5107 9.25459 12.2411 8.73405C11.9714 8.2135 11.713 7.75485 11.6668 7.7148C11.6208 7.67476 11.4485 7.37991 11.2844 7.05957C10.8922 6.2947 10.5935 5.76644 10.502 5.67631C10.4613 5.63627 10.2671 5.2759 10.0704 4.87548C9.87363 4.47506 9.66401 4.12561 9.60474 4.09896C9.54546 4.07217 9.49684 3.95758 9.49684 3.84415C9.49684 3.73072 9.4321 3.63783 9.35297 3.63783C9.27384 3.63783 9.2091 3.56779 9.2091 3.48203C9.2091 3.25444 8.35208 2.0181 7.92336 1.62715C7.41565 1.16427 6.82033 0.860675 5.97208 0.631928C4.97551 0.363139 4.25402 0.395318 3.19184 0.755839ZM102.311 0.748267C101.226 1.12772 100.07 2.12061 99.6009 3.07535C99.0007 4.29713 98.9712 5.02298 99.0138 17.5432L99.0544 29.483H101.5H103.946L103.983 17.7158C104.013 8.16414 104.054 5.98456 104.203 6.14007C104.361 6.30402 109.399 15.1214 110.677 17.4704C111.345 18.698 111.852 19.4031 112.475 19.9728C114.274 21.6182 117.491 21.4321 119.083 19.5907C119.537 19.0655 121.121 16.394 123.055 12.8917C123.469 12.1427 123.774 11.6115 125.57 8.51564C126.127 7.55464 126.668 6.57835 126.771 6.3461L126.958 5.92399L127.055 6.2733C127.108 6.4655 127.158 11.7842 127.166 18.0928L127.18 29.5627L129.59 29.5228L132 29.483V16.8017V4.12037L131.521 3.15616C130.651 1.4035 129.207 0.50758 127.252 0.50758C126.307 0.50758 125.96 0.575724 125.31 0.890088C123.984 1.53119 123.454 2.15308 122.102 4.65707C121.864 5.09753 121.564 5.62171 121.435 5.82192C121.305 6.02213 121.107 6.38251 120.994 6.62276C120.881 6.86301 120.683 7.22338 120.554 7.42359C120.424 7.6238 120.122 8.14798 119.882 8.58844C119.642 9.0289 119.179 9.86439 118.853 10.4449C118.527 11.0256 118.002 11.9755 117.687 12.5562C117.371 13.1369 117.05 13.7101 116.974 13.8303C116.897 13.9504 116.571 14.5236 116.249 15.1043C115.927 15.6849 115.617 16.1598 115.559 16.1595C115.502 16.1592 115.253 15.7826 115.006 15.3223C114.759 14.862 114.29 14.0105 113.963 13.4299C113.145 11.9755 112.283 10.4471 111.623 9.28007C110.397 7.11214 109.862 6.1507 109.469 5.41C109.242 4.98323 108.94 4.45904 108.797 4.24515C108.654 4.03125 108.383 3.54376 108.195 3.16169C107.766 2.28718 106.673 1.24304 105.781 0.855725C104.737 0.401725 103.419 0.360954 102.311 0.748267ZM48.5019 5.39981C50.6543 6.10964 52.0308 7.09132 53.5563 9.00415C53.6947 9.17771 53.808 9.35812 53.808 9.40486C53.808 9.4516 53.9264 9.66389 54.0712 9.87648C54.5662 10.6035 55.0797 12.2084 55.3943 14.0123C55.5671 15.0037 55.4782 15.9771 55.0718 17.5432C54.5248 19.6504 53.9743 20.6519 52.5863 22.0656C51.3159 23.3596 50.344 23.9767 48.6639 24.5559C47.7124 24.8841 47.2979 24.9413 45.8234 24.9485C44.7911 24.9534 43.8656 24.8816 43.5215 24.7701C41.3546 24.067 39.7561 23.087 38.5769 21.7384C37.9413 21.0114 37.1083 19.5321 36.5757 18.1845C36.2307 17.311 36.0707 15.0439 36.2516 13.5894C36.4313 12.145 36.4812 11.9681 37.0771 10.666C38.41 7.75339 41.1674 5.60613 44.2408 5.08719C45.342 4.90125 47.4616 5.05676 48.5019 5.39981ZM82.2009 5.45572C83.7079 5.93986 84.8146 6.61547 85.8931 7.70971C87.3848 9.22328 87.6536 9.66506 88.6431 12.2286C88.9439 13.0082 88.9137 17.0464 88.6007 17.9072C87.912 19.8003 86.8639 21.519 85.8207 22.4659C84.9467 23.2592 83.3003 24.2044 82.1646 24.565C81.1142 24.8982 80.6769 24.9569 79.2726 24.9526C77.8771 24.9482 77.438 24.887 76.4672 24.5616C72.9195 23.3724 70.9078 21.0541 69.8337 16.9173C69.6065 16.0423 69.5676 14.0016 69.7652 13.331C70.3997 11.1776 70.7481 10.2912 71.2976 9.4315C72.7715 7.12539 75.2493 5.49562 77.9058 5.08472C79.046 4.90839 81.0305 5.07977 82.2009 5.45572Z\" clip-rule=\"evenodd\" fill-rule=\"evenodd\"><\/path>\n<\/svg>\n\n<\/div>\n                                    <div>    <svg class=\"logo logo-shopify\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 214 61\"><title>Shopify<\/title><path fill=\"#95BF47\" d=\"M52.95 56.02 36.94 60 0 53.61s4.408-34.083 4.571-35.283c.22-1.59.273-1.64 1.958-2.17l5.723-1.772c.356-2.552 1.612-5.848 3.264-8.472 2.347-3.728 5.242-5.827 8.148-5.91 1.506-.045 2.764.465 3.744 1.515a5 5 0 0 1 .203.234c.157-.013.311-.028.467-.028h.009c2.25.004 4.114 1.287 5.384 3.714.35.675.638 1.382.86 2.11 1.124-.348 1.791-.554 1.794-.556.268-.08.957-.186 1.31.167.353.352 3.925 3.822 3.925 3.822s4.272.065 4.49.083a.58.58 0 0 1 .526.489c.041.303 6.574 44.467 6.574 44.467zM28.732 3.72c.686 1.769.86 3.817.882 5.288l2.866-.887c-.458-1.488-1.543-3.983-3.748-4.401zm-1.051 5.888c.02-1.607-.155-3.982-.958-5.66-.856.353-1.579.97-2.095 1.525-1.388 1.489-2.518 3.762-3.114 6.044l6.167-1.91zm-13.36 4.134 5.066-1.568c.564-2.966 1.979-6.041 3.825-8.021.712-.764 1.471-1.35 2.257-1.758-.491-.323-1.065-.473-1.748-.458-4.486.13-8.4 7.136-9.4 11.805zm9.01 4.958c-8.132.512-11.817 6.199-11.462 11.81.421 6.668 7.086 6.429 7.342 10.487.062.98-.547 2.367-2.253 2.475-2.61.165-5.87-2.295-5.87-2.295L9.841 46.48s3.239 3.47 9.124 3.1c4.902-.31 8.304-4.232 7.943-9.965-.46-7.288-8.644-7.967-8.84-11.078-.037-.571.001-2.844 3.607-3.072 2.458-.155 4.532.788 4.532.788l1.86-6.956s-1.603-.8-4.736-.597z\"\/><path fill=\"#5E8E3E\" d=\"M45.851 11.066c-.218-.02-4.489-.084-4.489-.084s-3.572-3.47-3.925-3.821a.87.87 0 0 0-.496-.228l.002 53.065L52.95 56.02s-6.532-44.162-6.574-44.465a.581.581 0 0 0-.526-.49h.001z\"\/><path d=\"M74.032 33.864c-1.84-1-2.787-1.841-2.787-3 0-1.471 1.314-2.417 3.367-2.417 2.389 0 4.522.998 4.522.998l1.682-5.154s-1.547-1.21-6.1-1.21c-6.337 0-10.729 3.629-10.729 8.73 0 2.893 2.05 5.102 4.787 6.679 2.209 1.26 2.998 2.156 2.998 3.47 0 1.367-1.105 2.472-3.155 2.472-3.056 0-5.942-1.58-5.942-1.58l-1.788 5.156s2.666 1.788 7.152 1.788c6.522 0 11.202-3.208 11.202-8.993-.001-3.1-2.367-5.31-5.209-6.94zm25.981-10.834c-3.208 0-5.733 1.525-7.678 3.838l-.105-.053 2.787-14.567h-7.258l-7.047 37.076h7.258l2.42-12.674c.946-4.787 3.418-7.73 5.732-7.73 1.63 0 2.262 1.104 2.262 2.682 0 1-.105 2.21-.315 3.208l-2.734 14.515h7.258l2.839-14.99c.316-1.577.527-3.47.527-4.732-.003-4.103-2.159-6.574-5.945-6.574h-.001zm22.35 0c-8.731 0-14.514 7.888-14.514 16.67 0 5.627 3.47 10.149 9.992 10.149 8.572 0 14.357-7.677 14.357-16.67 0-5.206-3.051-10.15-9.835-10.15zm-3.576 21.247c-2.472 0-3.524-2.104-3.524-4.734 0-4.154 2.157-10.938 6.101-10.938 2.577 0 3.417 2.21 3.417 4.366 0 4.469-2.154 11.306-5.994 11.306zm31.975-21.247c-4.899 0-7.679 4.312-7.679 4.312h-.104l.421-3.891h-6.416c-.315 2.63-.895 6.625-1.472 9.623l-5.049 26.557h7.258l1.997-10.728h.159s1.489.946 4.26.946c8.519 0 14.093-8.73 14.093-17.565 0-4.89-2.157-9.254-7.468-9.254zm-6.942 21.35c-1.884 0-2.999-1.051-2.999-1.051l1.21-6.784c.842-4.522 3.208-7.52 5.733-7.52 2.209 0 2.892 2.05 2.892 3.997 0 4.68-2.787 11.359-6.836 11.359v-.001zm24.77-31.763c-2.313 0-4.154 1.84-4.154 4.206 0 2.157 1.367 3.63 3.418 3.63h.105c2.262 0 4.207-1.526 4.26-4.207 0-2.104-1.42-3.63-3.629-3.63zm-10.149 36.707h7.256l4.945-25.715h-7.311l-4.89 25.715zm30.66-25.768h-5.049l.262-1.21c.421-2.471 1.894-4.68 4.313-4.68a7.505 7.505 0 0 1 2.313.368l1.42-5.68s-1.262-.63-3.945-.63c-2.577 0-5.152.736-7.099 2.418-2.472 2.104-3.629 5.153-4.207 8.204l-.209 1.21h-3.367l-1.052 5.47h3.367l-3.839 20.3h7.258l3.839-20.3h4.996l.999-5.47zm17.459.054s-4.537 11.43-6.574 17.669h-.106c-.138-2.01-1.788-17.67-1.788-17.67h-7.626l4.367 23.61c.106.527.053.844-.158 1.21-.843 1.63-2.262 3.21-3.945 4.367-1.367.999-2.892 1.63-4.101 2.05L188.627 61c1.473-.315 4.522-1.526 7.099-3.944 3.314-3.103 6.363-7.89 9.518-14.41l8.888-19.038h-7.572v.002z\"\/><\/svg>\n\n<\/div>\n                                    <div>    <svg class=\"logo logo-lyft\" role=\"img\" viewbox=\"0 0 199 141\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><title>Lyft<\/title><path d=\"M.746 3.343h30.06v80.674c0 12.767 5.84 20.372 10.458 23.632-4.889 4.346-19.829 8.149-30.966-1.087C3.732 101.118.746 92.166.746 83.745V3.343zm187.863 67.014v-8.478h9.168V32.136h-10.068C183.844 14.279 167.946.898 148.933.898c-21.903 0-39.658 17.756-39.658 39.658v69.459c6.24.877 13.674-.109 19.999-5.354 6.565-5.445 9.551-14.396 9.551-22.817v-2.559h15.013V49.542h-15.013v-8.986h.036c0-5.562 4.509-10.071 10.072-10.071 5.562 0 10.089 4.509 10.089 10.071v29.801c0 21.902 17.774 39.658 39.676 39.658V80.428c-5.562 0-10.089-4.509-10.089-10.071zM74.761 32.136v43.651c0 2.478-2.056 4.487-4.593 4.487s-4.593-2.009-4.593-4.487V32.136H35.831v51.338c0 9.235 3.132 20.915 17.385 24.718 14.268 3.807 22.545-4.074 22.545-4.074-.754 5.192-5.644 8.995-13.521 9.81-5.96.616-13.582-1.358-17.384-2.988v27.199c9.688 2.857 19.935 3.78 29.963 1.834 18.199-3.531 29.685-18.742 29.685-38.979V32.136H74.761z\" fill=\"#EA0B8C\" fill-rule=\"evenodd\"\/><\/svg>\n\n<\/div>\n                                    <div>    <svg class=\"logo logo-chartboost\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 206 31\"><title>Chart boost<\/title><g fill=\"currentColor\" clip-path=\"url(#chartboost-a)\"><path d=\"M44.577 18.523c0-7.131 4.357-11.975 11.108-11.975 5.153 0 8.912 3.027 9.777 7.905h-3.06c-.898-3.263-3.36-5.215-6.851-5.215-4.89 0-8.016 3.836-8.016 9.285 0 5.448 2.993 9.284 7.882 9.284 3.593 0 6.087-1.918 6.95-5.215h3.061c-.865 4.878-4.724 7.905-9.977 7.905-6.683.003-10.874-4.775-10.874-11.974m38.345 2.22v9.553h-2.728v-9.383c0-3.566-1.697-5.449-4.624-5.449-3.16 0-5.123 2.08-5.123 6.258v8.58H67.72V6.547h2.727v9.918c.795-2.171 2.728-3.528 5.587-3.528 3.793 0 6.885 2.12 6.885 7.805zm18.795 7.033v2.522h-1.498c-2.26 0-1.973-1.56-2.007-3.242-.837 2.14-3.812 3.444-6.74 3.444-3.724 0-6.252-1.884-6.252-5.011 0-3.43 2.36-5.348 6.82-5.348h4.988v-1.178c0-2.22-1.564-3.565-4.223-3.565-2.395 0-3.992 1.143-4.325 2.894h-2.728c.399-3.364 3.092-5.348 7.184-5.348 4.322 0 6.82 2.186 6.82 6.189v7.502c0 .907.332 1.143 1.096 1.143h.865zm-4.69-5.317h-5.256c-2.428 0-3.792.907-3.792 2.86 0 1.682 1.43 2.825 3.693 2.825 3.391 0 5.356-1.984 5.356-4.844zm15.607-9.319v2.69h-1.364c-3.559 0-4.889 2.995-4.889 5.72v8.745h-2.36V13.14h2.36v3.384c.84-2.532 2.46-3.384 5.487-3.384zm1.996 2.526V6.548h2.728v6.592h4.39v2.523h-4.39v10.125c0 1.446.498 1.985 1.961 1.985h2.694v2.523h-2.961c-3.26 0-4.425-1.446-4.425-4.476V15.666zm26.535 6.054c0 5.246-3.46 8.78-8.149 8.78-2.862 0-4.545-.919-6.188-3.312v3.11h-2.36V6.548h2.36v9.35c1.287-2.197 3.326-2.96 6.188-2.96 4.689 0 8.149 3.197 8.149 8.781m-2.794 0c0-3.736-2.26-6.325-5.62-6.325-3.36 0-5.587 2.589-5.587 6.258s2.261 6.39 5.587 6.39c3.325 0 5.62-2.588 5.62-6.324m4.676.002c0-5.216 3.459-8.782 8.413-8.782 4.955 0 8.414 3.566 8.414 8.781 0 5.216-3.459 8.781-8.414 8.781-4.954 0-8.413-3.565-8.413-8.78m14.035 0c0-3.667-2.261-6.325-5.622-6.325-3.359 0-5.62 2.658-5.62 6.324s2.261 6.324 5.62 6.324c3.361 0 5.622-2.658 5.622-6.324m4.73.001c0-5.216 3.458-8.782 8.413-8.782s8.414 3.566 8.414 8.781c0 5.216-3.459 8.781-8.414 8.781s-8.413-3.565-8.413-8.78m14.033 0c0-3.667-2.261-6.325-5.62-6.325-3.36 0-5.621 2.658-5.621 6.324s2.261 6.324 5.621 6.324c3.359 0 5.62-2.658 5.62-6.324m8.059 2.926c.099 2.019 1.861 3.5 4.688 3.5 2.395 0 4.092-1.043 4.092-2.624 0-2.155-1.862-2.322-4.391-2.624-3.792-.47-6.818-1.244-6.818-4.81 0-3.127 2.827-5.18 6.65-5.146 3.858.035 6.653 1.85 6.92 5.417h-2.793c-.2-1.748-1.797-3.061-4.124-3.061-2.326 0-3.957 1.008-3.957 2.589 0 1.883 1.796 2.12 4.256 2.422 3.859.472 6.951 1.212 6.951 5.011 0 3.197-3.026 5.181-6.786 5.181-4.39 0-7.417-2.085-7.483-5.852h2.795zm13.871-11.505V6.548h2.728v6.592h4.391v2.523h-4.391v10.125c0 1.446.499 1.985 1.962 1.985h2.693v2.523h-2.96c-3.261 0-4.426-1.446-4.426-4.476V13.14zM25.768 6.312C18.487 17.666 9.235 26.045.157 28.844c0 0 13.61-9.035 18.515-24.655L24.299.5z\"\/><path d=\"M24.732 13.33C17.359 21.83 9.102 27.94.96 30.45h31.955c1.554-4.257 2.403-8.513 2.544-12.772.195-5.838-6.928-8.735-10.73-4.35z\"\/><\/g><defs><clipPath id=\"chartboost-a\"><path fill=\"currentColor\" d=\"M.158.5h205v30h-205z\"\/><\/clipPath><\/defs><\/svg>\n\n<\/div>\n                            <\/div>\n            <\/div>\n<\/section>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/d2h1bfu6zrdxog.cloudfront.net\/wp-content\/uploads\/2023\/03\/g2-leader-winter-2023.png\" alt=\"\" class=\"wp-image-32119\"\/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/d2h1bfu6zrdxog.cloudfront.net\/wp-content\/uploads\/2023\/03\/g2-users-love-us.png\" alt=\"\" class=\"wp-image-32120\"\/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"interview-best-practices-for-postgre-sql-roles\">Interview best practices for PostgreSQL roles<\/h2>\n\n\n\n<p>When conducting successful PostgreSQL interviews, it is vital to consider various elements, such as the candidate&#8217;s level of expertise and the specific engineering position. To enhance the results of your PostgreSQL interview questions, we recommend adopting the following strategies when engaging with potential hires:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create technical questions that align with real-life business situations within your company. This method not only fosters better engagement with the applicant but also enables you to more accurately assess their suitability for your team.<\/li>\n\n\n\n<li>Encourage questioning during the interview and cultivate a collaborative environment.<\/li>\n\n\n\n<li>If your candidate will be integrating an application with PostgreSQL, make sure they also have a basic understanding of the language the application is written in.<\/li>\n<\/ul>\n\n\n\n<p>In addition, adhering to established interview etiquette is essential for PostgreSQL interviews. This entails adjusting the difficulty of questions to match the candidate&#8217;s technical proficiency, providing timely updates on their application status, and allowing them to ask questions about the assessment process or working with you and your team.<\/p>\n","protected":false},"parent":0,"menu_order":0,"template":"","class_list":["post-32726","interview-questions","type-interview-questions","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/interview-questions\/32726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/interview-questions"}],"about":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/types\/interview-questions"}],"wp:attachment":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media?parent=32726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}